You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.2 KiB
40 lines
1.2 KiB
// browser shim for xmlhttprequest module
|
|
|
|
const hasCORS = require("has-cors");
|
|
const globalThis = require("./globalThis");
|
|
|
|
module.exports = function(opts) {
|
|
const 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
|
|
const 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
|
|
const 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 globalThis[["Active"].concat("Object").join("X")](
|
|
"Microsoft.XMLHTTP"
|
|
);
|
|
} catch (e) {}
|
|
}
|
|
};
|
|
|