在Angular和IE8中使用$ http请求拒绝访问

cyb*_*bat 8 javascript internet-explorer-8 node.js angularjs

我想让我的角应用程序执行$ ​​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');
Run Code Online (Sandbox Code Playgroud)

我试图使用调试工具获取有关错误的更多信息,但是:

Fiddler:没有显示xmlhttprequests - 似乎你可以破解你的NET应用程序来修复它但不知道如何处理我的网页.DebugBar:没有显示这些请求FirebugLite:我试过的2版本被破坏 - 只是随机错误而且没有加载

将主机更改为相同的源可以解决问题所以我认为它正在尝试一些东西,但是人类很难调试.

关于这个的角度帖子似乎已经过时了,我不知道该怎么做.

Ala*_*lan 7

这与$ http无关.$ http允许您进行XHR(XDR)或JSONP请求.它没有提供规避浏览器相同原始策略的机制.

将主机更改为相同的源可以解决问题所以我认为它正在尝试一些东西,但是人类很难调试.

这是你问题的关键.IE8不支持跨源资源共享(CORS).为了使用IE8进行跨域调用,您最好:

  1. 使用您的nodejs应用程序为您代理请求,让您使用相同的域.
  2. 在$ http.get()请求中使用JSONP

有许多与CORS和IE8相关的陷阱,这里有概述.