【发布时间】:2017-06-08 08:55:46
【问题描述】:
当我发出 $http.post 请求并将“withCredentials”属性设置为 true 时。 我的请求在 Chrome 和 Fiefox 中运行良好。但是,我在 IE 中收到以下错误:
XMLHttpRequest:网络错误 0x80070005,访问被拒绝。
我注意到,如果我在 IE 中启用“跨域访问数据资源”设置,错误就会得到解决。但是我需要找到一个替代解决方案,因为我不能要求用户明显启用该设置。
我注意到对同一域的 $http.get 请求在 IE 中没有问题,问题仅在于 $http.post 请求,选项请求正在获取 500 内部服务器,我看到请求和响应标头下面:
笔记: 我确实有必要的自定义标头,当 OPTIONS 请求成功时,我可以在 Chrome 中看到它们。下面列出了我在 Chrome 中看到的标题:
如果我遗漏了一些可以使请求在 IE 中工作而无需启用跨域访问数据源的内容,请告诉我吗?
【问题讨论】:
-
您在哪个版本的 IE 上测试?
-
它是 IE 11 ,但我尝试在调试器的模拟器选项卡中切换到 IE 10,9,8,7 并得到同样的错误
-
显然您的服务器没有正确响应 OPTIONS 请求。修复服务器。
-
您是否已经诊断出服务器响应 500 响应的原因?这是一条非常重要的信息。
-
但是服务器对 Chrome 中的相同请求响应为 200,并且在启用“跨域访问数据源”的情况下对 IE 中的相同请求响应为 200,所以看起来很好跨度>
标签: angularjs internet-explorer post cors preflight