/* * 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(); }); }