mirror of
				https://scm.univ-tours.fr/22107988t/rappaurio-sae501_502.git
				synced 2025-11-04 04:15:23 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			68 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
'use strict';
 | 
						|
 | 
						|
import utils from './../utils.js';
 | 
						|
import platform from '../platform/index.js';
 | 
						|
 | 
						|
export default platform.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() {
 | 
						|
    const msie = /(msie|trident)/i.test(navigator.userAgent);
 | 
						|
    const urlParsingNode = document.createElement('a');
 | 
						|
    let originURL;
 | 
						|
 | 
						|
    /**
 | 
						|
    * Parse a URL to discover it's components
 | 
						|
    *
 | 
						|
    * @param {String} url The URL to be parsed
 | 
						|
    * @returns {Object}
 | 
						|
    */
 | 
						|
    function resolveURL(url) {
 | 
						|
      let 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) {
 | 
						|
      const 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;
 | 
						|
    };
 | 
						|
  })();
 |