IE9 CORS 和restangular
Posted
技术标签:
【中文标题】IE9 CORS 和restangular【英文标题】:IE9 CORS and restangular 【发布时间】:2014-07-16 09:26:15 【问题描述】:我正在使用 restangular
和 angularjs
应用程序并调用 RESTful API 服务器。但是,这是对 IE9 和 IE10 的轰炸。有什么解决办法吗?
我在这里尝试了 IE10 的步骤:http://blogs.msdn.com/b/ie/archive/2012/02/09/cors-for-xhr-in-ie10.aspx 无济于事。
我的angularjs
有一个这样的网址:http://portal.mydomain.com,我的 api 服务器有一个这样的网址:http://api.mydomain.com。
我已确认我在响应中得到了适当的标头:
access-control-allow-origin: http://portal.mydomain.com
access-control-allow-credentials: true
但是,我不断收到以下信息:
SEC7118: XMLHttpRequest for http://api.mydomain.com/ required Cross Origin Resource Sharing (CORS).
任何帮助将不胜感激!
【问题讨论】:
【参考方案1】:您需要为 IE 9 使用 polyfill(google ie cors polyfill)。 IE 8 和 IE 9 不支持“正常”CORS。 (Google XdomainRequest 获取更多信息。)
对于 IE 10:
您是否在服务器端正确设置了 Access-Control-Allow-Methods 和 Access-Control-Allow-Headers(您只提到了 allow-origin 和 allow-credentials)?如果您使用凭据,您是否启用了该客户端? (RestangularProvider.setDefaultHttpFields(withCredentials: true))
请求是否需要预先发送?如果是这样,如果您事先使用 curl 或类似的方式手动执行 OPTIONS 请求,您是否看到服务器返回的正确 Access 标头?即使从技术上讲,请求在技术上不需要进行预检,也值得检查一下 IE 是否真的是,并验证您的后端是否正确支持 OPTIONS 请求。
听起来您是在说请求在非 IE 浏览器中正常工作。对吗?
【讨论】:
我们实际上最终使用了这里列出的答案:***.com/questions/18706208/… @devlife 我最终也使用了 xdomain :-)。 (在搜索 IE 8 和 9 CORS polyfill 选项时发现了您的问题。)以上是关于IE9 CORS 和restangular的主要内容,如果未能解决你的问题,请参考以下文章
IE9 重定向缓存、字体和跨域资源共享 (CORS) CDN HTTP 标头
带有 AngularJS CORS 的 IE9、IE8 返回“访问被拒绝” - ASP.NET WebApi