我们有一个项目已经在webapi上启用了CORS支持。我们从ajax调用api。客户端CORS预检调用仅在使用带有Edge仿真的IE11的Win 8.1下失败。它使用相同的浏览器配置在Win 7下成功运行。
我们也尝试过Mike Wasson编写的示例项目文章,结果相同。 http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api#create-webapi-project
客户端收到的错误是XMLHTTPRequest:网络错误0x80070005,访问被拒绝。在开发人员工具下观看网络监视器时,结果是中止。协议是HTTPS。发起人是CORS预检。不幸的是,细节不会显示任何内容,包括请求标题。并且我们不允许运行任何其他浏览器或提琴手来帮助调试。
除了上面提到的文章之外,我们在客户端尝试了一些事情,我们已经添加了(这里手写的代码,请原谅任何小错误):
$.support.cors = true; before the ajax call.
crossDomain: true in the ajax call itself
beforeSend : function (request) {
request.setRequestHeader("Access-Control-Allow-Origin", "*");
request.setRequestHeader("Access-Control-Allow-Methods","POST, GET, OPTIONS, DELETE, PUT, HEAD");
}
所以问题是为什么CORS预检会在Win 7下运行但不在Win8.1下运行? 只有IE11作为我们的调试选项,有没有办法查看预检请求标题?