| // browser shim for xmlhttprequest module |
| |
| var hasCORS = require('has-cors'); |
| |
| module.exports = function (opts) { |
| var xdomain = opts.xdomain; |
| |
| // scheme must be same when usign XDomainRequest |
| // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx |
| var xscheme = opts.xscheme; |
| |
| // XDomainRequest has a flow of not sending cookie, therefore it should be disabled as a default. |
| // https://github.com/Automattic/engine.io-client/pull/217 |
| var enablesXDR = opts.enablesXDR; |
| |
| // XMLHttpRequest can be disabled on IE |
| try { |
| if ('undefined' !== typeof XMLHttpRequest && (!xdomain || hasCORS)) { |
| return new XMLHttpRequest(); |
| } |
| } catch (e) { } |
| |
| // Use XDomainRequest for IE8 if enablesXDR is true |
| // because loading bar keeps flashing when using jsonp-polling |
| // https://github.com/yujiosaka/socke.io-ie8-loading-example |
| try { |
| if ('undefined' !== typeof XDomainRequest && !xscheme && enablesXDR) { |
| return new XDomainRequest(); |
| } |
| } catch (e) { } |
| |
| if (!xdomain) { |
| try { |
| return new global[['Active'].concat('Object').join('X')]('Microsoft.XMLHTTP'); |
| } catch (e) { } |
| } |
| }; |