39 lines
1.2 KiB
JavaScript
39 lines
1.2 KiB
JavaScript
'use strict';
|
|
|
|
// https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer
|
|
const REFERRER_ORIGIN = self.location.origin + '/';
|
|
const REFERRER_URL = self.location.href;
|
|
|
|
function testReferrerHeader(id, host, expectedReferrer) {
|
|
const url = `${
|
|
host}/beacon/resources/inspect-header.py?header=referer&cmd=put&id=${id}`;
|
|
|
|
promise_test(t => {
|
|
fetchLater(url, {activateAfter: 0});
|
|
return pollResult(expectedReferrer, id).then(result => {
|
|
assert_equals(result, expectedReferrer, 'Correct referrer header result');
|
|
});
|
|
}, `Test referer header ${host}`);
|
|
}
|
|
|
|
function pollResult(expectedReferrer, id) {
|
|
const checkUrl =
|
|
`/beacon/resources/inspect-header.py?header=referer&cmd=get&id=${id}`;
|
|
|
|
return new Promise(resolve => {
|
|
function checkResult() {
|
|
fetch(checkUrl).then(response => {
|
|
assert_equals(
|
|
response.status, 200, 'Inspect header response\'s status is 200');
|
|
let result = response.headers.get('x-request-referer');
|
|
|
|
if (result != undefined) {
|
|
resolve(result);
|
|
} else {
|
|
step_timeout(checkResult.bind(this), 100);
|
|
}
|
|
});
|
|
}
|
|
checkResult();
|
|
});
|
|
}
|