mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
42 lines
1.2 KiB
JavaScript
42 lines
1.2 KiB
JavaScript
/*
|
|
* TestSever customized specifically for the needs of:
|
|
* Bug 1080987 - navigator.sendBeacon() needs to sent 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 = request.getHeader("origin");
|
|
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();
|
|
});
|
|
}
|