/** * Any copyright is dedicated to the Public Domain. * http://creativecommons.org/publicdomain/zero/1.0/ */ "use strict"; function handleRequest(request, response) { switch (request.method) { case "POST": try { var optionsHost = request.getHeader("options-host"); } catch (e) {} var headerFound = false; if (optionsHost) { setState("postHost", request.host); setState("optionsHost", optionsHost); headerFound = true; } try { var emptyHeader = "nada" + request.getHeader("empty"); } catch (e) {} if (emptyHeader && emptyHeader == "nada") { setState("emptyHeader", "nada"); headerFound = true; } if (headerFound) { return; } break; case "OPTIONS": if (getState("optionsHost") == request.host) { try { var optionsHeader = request.getHeader( "Access-Control-Request-Headers" ); } catch (e) {} setState("optionsHeader", "'" + optionsHeader + "'"); } break; case "GET": response.setHeader("Cache-Control", "no-cache", false); response.setHeader("Content-Type", "text/plain", false); if ( getState("postHost") == request.host && getState("emptyHeader") == "nada" ) { var result = getState("optionsHeader"); if (result) { response.write( "Success: expected OPTIONS request with " + result + " header" ); } else if (getState("badGet") == 1) { response.write("Error: unexpected GET request"); } } else { setState("badGet", "1"); response.write("Error: this response should never be seen"); } return; } response.setStatusLine(request.httpVersion, 501, "Not Implemented"); }