【发布时间】:2016-03-28 22:20:13
【问题描述】:
我正在使用 AngularJS 和 .NET MVC/WebApi 构建一个 SPA。我在 Chrome 发送 POST、PUT、DELETE 操作的飞行前请求(应该如此)并从服务器返回 404 响应时遇到问题。问题是这个请求(具有相同的标头和 HTTP 方法)在使用 API 测试工具时是成功的;这个例子的邮递员。
IIS 跟踪: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 OPTIONS /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>
以前有没有其他人遇到过这个问题?任何解决方案/修复?
【问题讨论】:
-
我看到调用是对不同的 API 端点进行的,你确定在 chrome 中不起作用的那个在邮递员中起作用吗?
-
@maurycy 哎呀,那是我的错。我将屏幕截图更新为匹配请求:-X
-
无论出于何种原因服务器说此 URL 不存在,也许您应该检查服务器的访问日志
-
这里是 404 呼叫:2015-12-22 15:53:18 127.0.0.1 OPTIONS /api/v1/sidebar v=1450799596414 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 etk.localtest.me 404 0 0 2423
-
嗯,这就是我的意思,这个调用有 404,服务器是否故意抛出这个错误,即身份验证检查?如果您将在浏览器中使用相同的 URL,您会得到什么(转到地址)
标签: angularjs google-chrome asp.net-web-api