在将AngularJS数据发布到Web API端点时出现问题。从我收到的客户端浏览器:
405 (Method Not Allowed)
Response for preflight has invalid HTTP status code 405
我有两个独立的项目,都在localhost中运行。在我的Web Api上,我在config上设置了 EnableCors()。
如果我将标题的内容类型设置为:
'Content-type': 'application/x-www-form-urlencoded; charset=utf-8'
然后它就能够点击我的Web API端点。但是我的对象参数为null。这可能是XML格式而不是JSON吗?我该如何解决这个问题?
客户端代码:
function signUp(data) {
$http({
method: 'POST',
url: 'http://localhost:15218/api/account/register',
data: JSON.stringify(data),
headers: {
'Content-type': 'application/json'
}
}).then(function successCallback(response) {
console.log(response);
}, function errorCallback(response) {
console.log(response);
});
}
}
服务器端方法签名:
[HttpPost]
[Route("Register")]
public async Task<HttpResponseMessage> Register(UserCommand command)
答案 0 :(得分:0)
您可以通过添加global.asax文件
来启用服务上的corsprotected void Application_BeginRequest(object sender, EventArgs e)
{
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");
if (HttpContext.Current.Request.HttpMethod == "OPTIONS")
{
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "POST, PUT, DELETE");
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept");
HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000");
HttpContext.Current.Response.End();
}
}
答案 1 :(得分:0)
Response for preflight has invalid HTTP status code 405
在发出要发出的POST请求之前,浏览器正在发出请求权限的OPTIONS请求。
服务器在没有200响应的情况下响应OPTIONS请求。错误消息明确告诉您。 (也许Access-Control-Allow-Origin
导致问题)
所以在其他任何事情之前,你必须检查请求方法的类型。如果是OPTIONS
,则传递200个响应代码。