Skip to content

Commit 58fb2e2

Browse files
committed
Merge pull request #722 from AnalyticalGraphicsInc/fix_isCrossOriginUrl_in_ie
Fix isCrossOriginUrl in IE
2 parents 3cf39a7 + 223241a commit 58fb2e2

File tree

2 files changed

+44
-0
lines changed

2 files changed

+44
-0
lines changed

Source/Core/isCrossOriginUrl.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ define(function() {
1616

1717
var location = window.location;
1818
a.href = url;
19+
a.href = a.href; // IE only absolutizes href on get, not set
1920

2021
// host includes both hostname and port if the port is not standard
2122
return a.protocol !== location.protocol || a.host !== location.host;

Specs/Core/isCrossOriginUrlSpec.js

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
/*global defineSuite*/
2+
defineSuite([
3+
'Core/isCrossOriginUrl',
4+
'ThirdParty/Uri'
5+
], function(
6+
isCrossOriginUrl,
7+
Uri) {
8+
"use strict";
9+
/*global jasmine,describe,xdescribe,it,xit,expect,beforeEach,afterEach,beforeAll,afterAll,spyOn,runs,waits,waitsFor*/
10+
11+
it('returns false for relative urls', function() {
12+
expect(isCrossOriginUrl('/some/url.jpg')).toEqual(false);
13+
expect(isCrossOriginUrl('some/url.jpg')).toEqual(false);
14+
});
15+
16+
it('returns false for absolute urls that are not cross-origin', function() {
17+
var pageUri = new Uri(location.href);
18+
19+
var absoluteUrl = new Uri('/some/url.jpg').resolve(pageUri).toString();
20+
expect(isCrossOriginUrl(absoluteUrl)).toEqual(false);
21+
22+
absoluteUrl = new Uri('some/url.jpg').resolve(pageUri).toString();
23+
expect(isCrossOriginUrl(absoluteUrl)).toEqual(false);
24+
});
25+
26+
it('returns true for absolute urls that are cross-origin', function() {
27+
expect(isCrossOriginUrl('http://example.com/some/url.jpg')).toEqual(true);
28+
29+
// a different scheme counts as cross-origin
30+
var pageUri = new Uri(location.href);
31+
pageUri.scheme = location.protocol === 'https:' ? 'http' : 'https';
32+
33+
var absoluteUrl = pageUri.toString();
34+
expect(isCrossOriginUrl(absoluteUrl)).toEqual(true);
35+
36+
// so does a different port
37+
pageUri = new Uri(location.href);
38+
pageUri.authority = location.hostname + ':' + (+location.port + 1);
39+
40+
absoluteUrl = pageUri.toString();
41+
expect(isCrossOriginUrl(absoluteUrl)).toEqual(true);
42+
});
43+
});

0 commit comments

Comments
 (0)