30 lines
659 B
JavaScript
30 lines
659 B
JavaScript
/**
|
|
* CORS Interceptor.
|
|
*/
|
|
|
|
import Url from '../../url/index';
|
|
import xdrClient from '../client/xdr';
|
|
import {inBrowser} from '../../util';
|
|
|
|
const SUPPORTS_CORS = inBrowser && 'withCredentials' in new XMLHttpRequest();
|
|
|
|
export default function (request) {
|
|
|
|
if (inBrowser) {
|
|
|
|
const orgUrl = Url.parse(location.href);
|
|
const reqUrl = Url.parse(request.getUrl());
|
|
|
|
if (reqUrl.protocol !== orgUrl.protocol || reqUrl.host !== orgUrl.host) {
|
|
|
|
request.crossOrigin = true;
|
|
request.emulateHTTP = false;
|
|
|
|
if (!SUPPORTS_CORS) {
|
|
request.client = xdrClient;
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|