blob: f6d70fa8a5d3bab9bdc5366d8bc456e36bb88cde (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
/*
* TestSever customized specifically for the needs of:
* Bug 1280692 - navigator.sendBeacon() should not send origin header
*/
function handleRequest(request, response)
{
response.setHeader("Cache-Control", "no-cache", false);
response.setHeader("Content-Type", "text/plain", false);
// case XHR-REQUEST: the xhr-request tries to query the
// stored header from the beacon request.
if (request.queryString == "queryheader") {
var header = getState("originHeader");
// if the beacon already stored the header - return.
if (header) {
response.write(header);
setState("originHeader", "");
return;
}
// otherwise wait for the beacon request
response.processAsync();
setObjectState("xhr-response", response);
return;
}
// case BEACON-REQUEST: get the beacon header and
// store the header on the server.
var header = "reset";
try {
header = request.getHeader("origin");
}
catch(e) {
header = "no-header";
}
setState("originHeader", header);
// if there is an xhr-request waiting, return the header now.
getObjectState("xhr-response", function(xhrResponse) {
if (!xhrResponse) {
return;
}
setState("originHeader", "");
xhrResponse.write(header);
xhrResponse.finish();
});
}
|