| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 | 'use strict';var utils = require('./../utils');module.exports = (  utils.isStandardBrowserEnv() ?  // Standard browser envs have full support of the APIs needed to test  // whether the request URL is of the same origin as current location.    (function standardBrowserEnv() {      var msie = /(msie|trident)/i.test(navigator.userAgent);      var urlParsingNode = document.createElement('a');      var originURL;      /**    * Parse a URL to discover it's components    *    * @param {String} url The URL to be parsed    * @returns {Object}    */      function resolveURL(url) {        var href = url;        if (msie) {        // IE needs attribute set twice to normalize properties          urlParsingNode.setAttribute('href', href);          href = urlParsingNode.href;        }        urlParsingNode.setAttribute('href', href);        // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils        return {          href: urlParsingNode.href,          protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',          host: urlParsingNode.host,          search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '',          hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',          hostname: urlParsingNode.hostname,          port: urlParsingNode.port,          pathname: (urlParsingNode.pathname.charAt(0) === '/') ?            urlParsingNode.pathname :            '/' + urlParsingNode.pathname        };      }      originURL = resolveURL(window.location.href);      /**    * Determine if a URL shares the same origin as the current location    *    * @param {String} requestURL The URL to test    * @returns {boolean} True if URL shares the same origin, otherwise false    */      return function isURLSameOrigin(requestURL) {        var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;        return (parsed.protocol === originURL.protocol &&            parsed.host === originURL.host);      };    })() :  // Non standard browser envs (web workers, react-native) lack needed support.    (function nonStandardBrowserEnv() {      return function isURLSameOrigin() {        return true;      };    })());
 |