CORS 选项预检悬挂
Posted
技术标签:
【中文标题】CORS 选项预检悬挂【英文标题】:CORS Options Preflight Hanging 【发布时间】:2013-04-12 06:52:00 【问题描述】:我有一个通过 SSL 托管的 ASP Web API 项目。我有另一个使用 API 的 ASP MVC 项目。在调试时,我看到 OPTIONS 请求经常(但并非总是)挂起并阻止其他调用继续进行的行为。
在 Chrome 调试器中,这些只是显示为“待处理”。如果启动 Fiddler,一切正常。我根本看不到任何错误,事情只是挂起。这在它到达授权码之前就失败了,所以我什至不能设置任何断点。
这可能是证书问题吗?防火墙?
【问题讨论】:
Adam,如果您正在使用此功能,请告诉我:aspnetwebstack.codeplex.com/…? 我没有使用它。我尝试了一些东西,但最终选择了 Thinktecture 中的那个。这些软件包都没有改变我看到的效果。 我的也挂了。Chrome 的选项状态是“待定”。它对我来说时断时续。我还在使用带有子域的 SSL (HTTPS) url。所以我知道预检请求失败了。 我看到OPTIONS
挂在 firefox 上,有/没有 fiddler,也没有 SSL/TLS。发生在大约 3/4 的请求中。令人沮丧,因为我不知道如何调试它。浏览器似乎已发送请求,但从未命中 CORS 处理程序中的断点。在完整的 IIS 上运行,而不是 IISExpress。 Fiddler 将请求显示为已发送但未响应,所以我猜这排除了浏览器是黑洞。
您是如何获得 SSL 证书的?是自签吗?换句话说,它是否给了您一个警告,并且您在第一次访问该网站时必须手动接受证书?如果是这样,那么这将是您的请求没有通过的问题。尝试使用 HTTP 测试它
【参考方案1】:
您可以试试这个:在 web.config 中添加以下节点。
<system.webServer>
<handlers>
<!-- your other handlers -->
<remove name="OPTIONSVerbHandler" />
</handlers>
</system.webServer>
【讨论】:
以上是关于CORS 选项预检悬挂的主要内容,如果未能解决你的问题,请参考以下文章