angular js。
打电话给网络API。
什么时候POST web api没有参数然后工作。但是当传递参数到POST web api时,它会给出以下错误。
错误:
XMLHttpRequest
无法加载http://localhost:60117/api/Parts
。对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许原始http://localhost:64658
访问。
注意:已经启用了cors nuget。 [EnableCors("*", "*", "*")]
低于webapiconfig.cs
var cors = new System.Web.Http.Cors.EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors);
以下是我的请求标题:
OPTIONS /api/Parts HTTP/1.1
Host: localhost:60117
Connection: keep-alive
Access-Control-Request-Method: POST
Origin: http://localhost:64658
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36
Access-Control-Request-Headers: content-type
Accept: */*
Referer: http://localhost:64658/app/views/Index.html
Accept-Encoding: gzip, deflate, sdch, br
Accept-Language: en-US,en;q=0.8
然后在web.config中执行下面的代码,然后给出mulitple accept动词错误。
<httpProtocol>
<customHeaders>
<clear/>
<add name="Access-Control-Expose-Headers " value="WWW-Authenticate"/>
<add name="Access-Control-Allow-Origin" value="*"/>
<add name="Access-Control-Allow-Methods" value="GET, POST, OPTIONS, PUT, PATCH, DELETE"/>
<add name="Access-Control-Allow-Headers" value="accept, authorization, Content-Type"/>
<remove name="X-Powered-By"/>
</customHeaders>
</httpProtocol>
更新
Now getting below request response message:
The requested resource does not support http method 'POST'.
AJAX电话:
$http({
method: "POST",
url: config.APIURL + 'Parts',
data: {'final':'final'}
});
请在这里帮助我。坚持这个问题。
答案 0 :(得分:0)
端口差异被视为跨域(xdomain)请求,因此某些浏览器会发送预检OPTIONS请求。
您需要设置服务器以接受这些请求并返回200 OK
按照以下网址
答案 1 :(得分:0)
如果您的尝试没有成功,可以尝试一下。 在WebApi的Globax.asax中,使用以下方法
protected void Application_BeginRequest()
{
if (Context.Request.HttpMethod == "OPTIONS")
{
Context.Response.AddHeader("Access-Control-Allow-Origin", Context.Request.Headers["Origin"]);
Context.Response.AddHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
Context.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
Context.Response.End();
}
}
并在您的WebApi配置中调用以下方法来启用Cors
config.EnableCors();
并且在您的控制器中具有类似于
的属性[EnableCors(origins: "*", headers: "*", methods: "*")]
希望这会有所帮助。 您还可以参考此网站https://msdn.microsoft.com/en-us/magazine/dn532203.aspx了解更多详情。 感谢
答案 2 :(得分:-1)
您需要在服务器端添加CorsMessageHandler
类以允许HTTP请求。