Chrome HTTP OPTIONS(预检)失败,但可以在邮递员

时间:2015-12-22 15:42:02

标签: angularjs google-chrome asp.net-web-api

我正在使用AngularJS和.NET MVC / WebApi构建SPA。我在Chrome发送POST,PUT,DELETE操作(应该如此)的飞行前请求以及从服务器返回404响应时遇到问题。这个问题是,当使用API​​测试工具时,此请求(具有相同的标头和HTTP方法)是成功的;这个例子的邮差。

以下是Chrome中的请求/响应信息: enter image description here

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的同样要求:

enter image description here

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>

之前是否有其他人遇到此问题?任何解决方案/解决方案?

1 个答案:

答案 0 :(得分:1)

预检请求由浏览器创建。根据我的经验,Postman实际上并没有发送预检请求,因此如果您的CORS配置出现任何问题,您的API调用将适用于Postman,但不适用于Chrome。