我正在尝试让我的角应用程序执行$ http.get请求。 IE8无处不在。我正在使用最新的Angular(我认为是1.0.6)。 IE提供的唯一消息是:TypeError:
访问被拒绝。 undefined(以前的角度是这个)
我的主机(nodejs)设置为发送cors标头:
res.header('Access-Control-Allow-Origin', '*'); //config.allowedDomains
res.header('Access-Control-Allow-Credentials', true);
res.header('Access-Control-Allow-Headers', 'X-Requested-With, Content-Type, X-Requested-By');
res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
我尝试使用调试工具获取有关错误的更多信息,但是:
Fiddler:没有显示xmlhttprequests - 似乎你可以破解你的NET应用程序来修复它但不知道如何处理我的网页。 DebugBar:也不显示这些请求 FirebugLite:我试过的2个版本坏了 - 只是随机错误而且没有加载
将主机更改为同一个来源可以解决问题,因此我认为它正在尝试某些功能,但是很难调试。
对此的角色帖子似乎过时了,我不知道该怎么做。
答案 0 :(得分:7)
这与$ http无关。 $ http允许您进行XHR(XDR)或JSONP请求。它没有提供规避浏览器相同原始策略的机制。
将主机更改为同一个来源可以解决问题,因此我认为它正在尝试某些功能,但是很难调试。
这是你问题的关键。 IE8不支持跨源资源共享(CORS)。为了使用IE8进行跨域调用,最好是:
有许多与CORS和IE8相关的陷阱,outlined here。
答案 1 :(得分:3)
我遇到了同样的问题,虽然它可能不太理想,但一种解决方案是将IE的“跨域访问数据源”安全设置更改为启用或提示:
http://technet.microsoft.com/en-us/library/dd346862.aspx
在我的情况下,当我尝试从另一个域上托管的自己的API获取数据(通过angular的$ resource)时,我遇到了同样的事情。在IE8& IE9这些请求会因上述错误而失败。更改IE中的安全设置以允许跨域数据请求解决了该问题。
答案 2 :(得分:1)