tor-browser

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

worker_xhr_headers_server.sjs (1852B)


      1 /**
      2  * Any copyright is dedicated to the Public Domain.
      3  * http://creativecommons.org/publicdomain/zero/1.0/
      4  */
      5 "use strict";
      6 
      7 function handleRequest(request, response) {
      8   switch (request.method) {
      9     case "POST":
     10       try {
     11         var optionsHost = request.getHeader("options-host");
     12       } catch (e) {}
     13 
     14       var headerFound = false;
     15       if (optionsHost) {
     16         setState("postHost", request.host);
     17         setState("optionsHost", optionsHost);
     18         headerFound = true;
     19       }
     20 
     21       try {
     22         var emptyHeader = "nada" + request.getHeader("empty");
     23       } catch (e) {}
     24 
     25       if (emptyHeader && emptyHeader == "nada") {
     26         setState("emptyHeader", "nada");
     27         headerFound = true;
     28       }
     29       if (headerFound) {
     30         return;
     31       }
     32       break;
     33 
     34     case "OPTIONS":
     35       if (getState("optionsHost") == request.host) {
     36         try {
     37           var optionsHeader = request.getHeader(
     38             "Access-Control-Request-Headers"
     39           );
     40         } catch (e) {}
     41         setState("optionsHeader", "'" + optionsHeader + "'");
     42       }
     43       break;
     44 
     45     case "GET":
     46       response.setHeader("Cache-Control", "no-cache", false);
     47       response.setHeader("Content-Type", "text/plain", false);
     48 
     49       if (
     50         getState("postHost") == request.host &&
     51         getState("emptyHeader") == "nada"
     52       ) {
     53         var result = getState("optionsHeader");
     54         if (result) {
     55           response.write(
     56             "Success: expected OPTIONS request with " + result + " header"
     57           );
     58         } else if (getState("badGet") == 1) {
     59           response.write("Error: unexpected GET request");
     60         }
     61       } else {
     62         setState("badGet", "1");
     63         response.write("Error: this response should never be seen");
     64       }
     65       return;
     66   }
     67 
     68   response.setStatusLine(request.httpVersion, 501, "Not Implemented");
     69 }