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