【发布时间】:2015-07-01 01:32:55
【问题描述】:
所以我有一个这样的 jquery ajax 请求:
function createLokiAccount(someurl) {
var d = {"Jurisdiction":17}
$.ajax({
type: "POST",
url:"http://myserver:111/Api/V1/Customers/CreateCustomer/",
data: JSON.stringify(d),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(data){alert(data);},
failure: function(errMsg) {
alert(errMsg);
}
});
}
这击中了我的 web api,它基本上是:
[HttpPost]
public CreateCustomer.Response CreateCustomer(CreateCustomer.Request request)
{
HttpContext.Current.Response.AppendHeader("Access-Control-Allow-Origin", "*");
...
当我在 Chrome 中调用它时给了我:
OPTIONS http://myserver:111/Api/V1/Customers/CreateCustomer/ 405 (Method Not Allowed)
No 'Access-Control-Allow-Origin' header is present on the requested resource.
当我从 Fiddler 发出 POST 请求时,它应该在响应标头中包含“Access-Control-Allow-Origin:*”,这表明 API 配置正确,但(来自 Fiddler)jquery 请求看起来像:
选项http://myserver:111/Api/V1/Customers/CreateCustomer/ HTTP/1.1 主机:我的服务器:111 连接:保持活动 访问控制请求方法:POST 来源:http://localhost:6500 用户代理:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36 Access-Control-Request-Headers:接受,内容类型 接受:/ 推荐人:http://localhost:6500/Home/Replication?interval=1 接受编码:gzip、deflate、sdch 接受语言:en-US,en;q=0.8,en-GB;q=0.6,it-IT;q=0.4,it;q=0.2
那么为什么我的 POST 请求变成了 OPTIONS 请求?
【问题讨论】:
-
您是否从localhost:6500 向myserver:111 上运行的API 发出ajax 请求?
-
是的,我是。 GET 请求似乎可以正常工作,只是 POST 没有达到我的预期。
标签: jquery ajax cors asp.net-web-api