socketioMEANseed/server/node_modules/engine.io-client/lib/xmlhttprequest.js
server/node_modules/engine.io-client/lib/xmlhttprequest.jsRaw
1// browser shim for xmlhttprequest module
2
3var hasCORS = require('has-cors');
4
5module.exports = function (opts) {
6 var xdomain = opts.xdomain;
7
8 // scheme must be same when usign XDomainRequest
9 // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx
10 var xscheme = opts.xscheme;
11
12 // XDomainRequest has a flow of not sending cookie, therefore it should be disabled as a default.
13 // https://github.com/Automattic/engine.io-client/pull/217
14 var enablesXDR = opts.enablesXDR;
15
16 // XMLHttpRequest can be disabled on IE
17 try {
18 if ('undefined' !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {
19 return new XMLHttpRequest();
20 }
21 } catch (e) { }
22
23 // Use XDomainRequest for IE8 if enablesXDR is true
24 // because loading bar keeps flashing when using jsonp-polling
25 // https://github.com/yujiosaka/socke.io-ie8-loading-example
26 try {
27 if ('undefined' !== typeof XDomainRequest && !xscheme && enablesXDR) {
28 return new XDomainRequest();
29 }
30 } catch (e) { }
31
32 if (!xdomain) {
33 try {
34 return new global[['Active'].concat('Object').join('X')]('Microsoft.XMLHTTP');
35 } catch (e) { }
36 }
37};