This is an annoying problem, and I don't think it is just IE that has this problem. Basically, I have a Node.js server from which I make cross-domain calls in order to get some JSON data to display.
It should be a JSONP call, and I give the callback in the url. I'm not sure how to do this?
So, the site (domainA.com) has an HTML page with a JS script like this (everything works fine in Firefox 3):
<script type="text/javascript"> var jsonName = 'ABC' var url = 'http://domainB.com:8080/stream/aires/' </script>
Now my Node.js server is very simple (I use express):
var app = require('express').createServer(); var express = require('express'); app.listen(3000); app.get('/stream/aires/:id', function(req, res){ request('http://'+options.host+':'+options.port+options.path, function (error, response, body) { if (!error && response.statusCode == 200) { console.log(body); // Print the google web page. res.writeHead(200, { 'Content-Type': 'application/json', 'Cache-Control': 'no-cache', 'Connection': 'keep-alive', 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Credentials': 'true' }); res.end(JSON.stringify(JSON.parse(body))); } }) });
How can I change these two to work with cross-domain GET in IE? I searched the internet and there seem to be several different things like jQuery.support.cors = true; which does not work. There also seem to be many lengthy workarounds.
There is no real βperfectβ design pattern that I could find for this type of thing.
When I see that I control both the web page and the cross-domain web service, I send to what is best done to ensure compatibility in all versions of IE along with FireFox, Opera, Chrome, etc.
Hooray!