mirror of
https://github.com/tenrok/axios.git
synced 2026-06-20 20:00:40 +03:00
+14
-3
@@ -16,11 +16,15 @@ module.exports = function xhrAdapter(resolve, reject, config) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var request = new XMLHttpRequest();
|
var request = new XMLHttpRequest();
|
||||||
|
var loadEvent = 'onreadystatechange';
|
||||||
|
var xDomain = false;
|
||||||
|
|
||||||
// For IE 8/9 CORS support
|
// For IE 8/9 CORS support
|
||||||
// Only supports POST and GET calls and doesn't returns the response headers.
|
// Only supports POST and GET calls and doesn't returns the response headers.
|
||||||
if (window.XDomainRequest && !('withCredentials' in request) && !isURLSameOrigin(config.url)) {
|
if (window.XDomainRequest && !('withCredentials' in request) && !isURLSameOrigin(config.url)) {
|
||||||
request = new window.XDomainRequest();
|
request = new window.XDomainRequest();
|
||||||
|
loadEvent = 'onload';
|
||||||
|
xDomain = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// HTTP basic authentication
|
// HTTP basic authentication
|
||||||
@@ -36,13 +40,20 @@ module.exports = function xhrAdapter(resolve, reject, config) {
|
|||||||
request.timeout = config.timeout;
|
request.timeout = config.timeout;
|
||||||
|
|
||||||
// Listen for ready state
|
// Listen for ready state
|
||||||
request.onload = function handleLoad() {
|
request[loadEvent] = function handleLoad() {
|
||||||
if (!request) {
|
if (!request || (request.readyState !== 4 && !xDomain)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// The request errored out and we didn't get a response, this will be
|
||||||
|
// handled by onerror instead
|
||||||
|
if (request.status === 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Prepare the response
|
// Prepare the response
|
||||||
var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;
|
var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;
|
||||||
var responseData = ['text', ''].indexOf(config.responseType || '') !== -1 ? request.responseText : request.response;
|
var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;
|
||||||
var response = {
|
var response = {
|
||||||
data: transformData(
|
data: transformData(
|
||||||
responseData,
|
responseData,
|
||||||
|
|||||||
Reference in New Issue
Block a user