Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F99404473
isURLSameOrigin.js
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Fri, Jan 24, 06:32
Size
2 KB
Mime Type
text/x-java
Expires
Sun, Jan 26, 06:32 (2 d)
Engine
blob
Format
Raw Data
Handle
23790759
Attached To
rOACCT Open Access Compliance Check Tool (OACCT)
isURLSameOrigin.js
View Options
'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
;
};
})();
Event Timeline
Log In to Comment