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 }