Skip to content

Commit 0119ac7

Browse files
feat: allow cors header to be excluded from request headers (#489)
1 parent b64b8b0 commit 0119ac7

File tree

2 files changed

+42
-0
lines changed

2 files changed

+42
-0
lines changed

src/xhr.js

+5
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,13 @@ var Request = function (url, data, headers) {
1010
this.headers = headers;
1111
};
1212

13+
const CORS_HEADER = 'Cross-Origin-Resource-Policy';
14+
1315
function setHeaders(xhr, headers) {
1416
for (const header in headers) {
17+
if (header === CORS_HEADER && !headers[header]) {
18+
continue;
19+
}
1520
xhr.setRequestHeader(header, headers[header]);
1621
}
1722
}

test/amplitude-client.js

+37
Original file line numberDiff line numberDiff line change
@@ -1690,13 +1690,50 @@ describe('AmplitudeClient', function () {
16901690
assert.equal(server.requests[0].requestHeaders['Content-Type'], 'application/json;charset=utf-8');
16911691
});
16921692

1693+
it('should send request with no cors header when passed an empty string', function () {
1694+
amplitude.init(apiKey, null, {
1695+
headers: { 'Cross-Origin-Resource-Policy': '' },
1696+
});
1697+
amplitude.logEvent('Event Type 1');
1698+
assert.lengthOf(server.requests, 1);
1699+
assert.notExists(server.requests[0].requestHeaders['Cross-Origin-Resource-Policy']);
1700+
});
1701+
1702+
it('should send request with no cors header when passed undefined', function () {
1703+
amplitude.init(apiKey, null, {
1704+
headers: { 'Cross-Origin-Resource-Policy': undefined },
1705+
});
1706+
amplitude.logEvent('Event Type 1');
1707+
assert.lengthOf(server.requests, 1);
1708+
assert.notExists(server.requests[0].requestHeaders['Cross-Origin-Resource-Policy']);
1709+
});
1710+
1711+
it('should send request with no cors header when passed null', function () {
1712+
amplitude.init(apiKey, null, {
1713+
headers: { 'Cross-Origin-Resource-Policy': null },
1714+
});
1715+
amplitude.logEvent('Event Type 1');
1716+
assert.lengthOf(server.requests, 1);
1717+
assert.notExists(server.requests[0].requestHeaders['Cross-Origin-Resource-Policy']);
1718+
});
1719+
1720+
it('should send request with custom cors header', function () {
1721+
amplitude.init(apiKey, null, {
1722+
headers: { 'Cross-Origin-Resource-Policy': 'same-site' },
1723+
});
1724+
amplitude.logEvent('Event Type 1');
1725+
assert.lengthOf(server.requests, 1);
1726+
assert.equal(server.requests[0].requestHeaders['Cross-Origin-Resource-Policy'], 'same-site');
1727+
});
1728+
16931729
it('should send https request', function () {
16941730
amplitude.options.forceHttps = true;
16951731
amplitude.logEvent('Event Type 1');
16961732
assert.lengthOf(server.requests, 1);
16971733
assert.equal(server.requests[0].url, 'https://api.amplitude.com');
16981734
assert.equal(server.requests[0].method, 'POST');
16991735
assert.equal(server.requests[0].async, true);
1736+
assert.equal(server.requests[0].requestHeaders['Cross-Origin-Resource-Policy'], 'cross-origin');
17001737
});
17011738

17021739
it('should send https request by configuration', function () {

0 commit comments

Comments
 (0)