我正在使用AngularJS和.NET MVC / WebApi构建SPA。我在Chrome发送POST,PUT,DELETE操作(应该如此)的飞行前请求以及从服务器返回404响应时遇到问题。这个问题是,当使用API测试工具时,此请求(具有相同的标头和HTTP方法)是成功的;这个例子的邮差。
IIS Trace:2015-12-22 16:18:01 127.0.0.1 OPTIONS / api / v1 / sidebar v = 1450801081939 443 - 127.0.0.1 Mozilla / 5.0 +(Windows + NT + 6.1; + WOW64)+ AppleWebKit /537.36+(KHTML,+like+Gecko)+Chrome/47.0.2526.106+Safari/537.36 https://etk.localtest.me/ 404 0 0 6
这是Postman的同样要求:
IIS跟踪:2015-12-22 16:17:14 127.0.0.1选项/ api / v1 / sidebar v = 1449874981966 443 - 127.0.0.1 Mozilla / 5.0 +(Windows + NT + 6.1; + WOW64)+ AppleWebKit /537.36+(KHTML,+like+Gecko)+Chrome/47.0.2526.106+Safari/537.36 - 200 0 0 7
我认为我的CORS配置配置正确,因为它适用于Postman?
<httpProtocol>
<customHeaders>
<remove name="Access-Control-Allow-Origin" />
<add name="Access-Control-Allow-Origin" value="*" />
<remove name="Access-Control-Allow-Headers" />
<add name="Access-Control-Allow-Headers" value="Content-Type, Accept, Authorization" />
<remove name="Access-Control-Allow-Methods" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
</customHeaders>
</httpProtocol>
之前是否有其他人遇到此问题?任何解决方案/解决方案?
答案 0 :(得分:1)
预检请求由浏览器创建。根据我的经验,Postman实际上并没有发送预检请求,因此如果您的CORS配置出现任何问题,您的API调用将适用于Postman,但不适用于Chrome。