I am trying to get my angular app to do an $http.get request. Works everywhere but IE8. I am using latest Angular (1.0.6 I think). The only message IE gives is:TypeError:
Access is denied. undefined (in previous angular this was )
My host (nodejs)is set to send cors headers:
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');
I have tried to get more info about the error using debug tools but:
Fiddler: doesn't show xmlhttprequests - seems you can hack your NET app to fix that but not sure what to do with my web page. DebugBar: doesn't show these requests either FirebugLite: 2 version I tried are broken - just random errors and doesn't load
Changing the hosts to same origin clears the issue so I assume it's trying something but man it's hard to debug.
Angular posts on this seem outdated and I am not sure what to do from here.
This has nothing to do with $http. $http lets you make XHR(XDR) or JSONP requests. It doesn't provide a mechanism to circumvent the browsers same origin policy.
Changing the hosts to same origin clears the issue so I assume it's trying something but man it's hard to debug.
That's the key to your problem. IE8 doesn't support Cross-Origin-Resource-Sharing (CORS) very well. In order to make cross domain calls with IE8, you better off either:
There are a number of gotchas associated with CORS and IE8, which are outlined here.
I was running into this same issue, and while it's likely not ideal, one solution is to change IE's 'Access data sources across domains' security setting to Enable or Prompt:
http://technet.microsoft.com/en-us/library/dd346862.aspx
In my case I was running into the same thing when trying to fetch data (via angular's $resource) from my own API that was hosted on another domain. In IE8 & IE9 these requests would fail with the error you described above. Changing the security setting in IE to allow cross-domain data requests resolved that problem.
AngularJS doesn't support IE<=9 CORS.
As required, there is a link to github official AngualrJS website :
AngularJS Github official discussion
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With