tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

beacon-originheader-handler.sjs (1295B)


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