|
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 if (optionsHost) { |
|
15 setState("postHost", request.host); |
|
16 setState("optionsHost", optionsHost); |
|
17 return; |
|
18 } |
|
19 break; |
|
20 |
|
21 case "OPTIONS": |
|
22 if (getState("optionsHost") == request.host) { |
|
23 try { |
|
24 var optionsHeader = |
|
25 request.getHeader("Access-Control-Request-Headers"); |
|
26 } catch(e) { } |
|
27 setState("optionsHeader", "'" + optionsHeader + "'"); |
|
28 } |
|
29 break; |
|
30 |
|
31 case "GET": |
|
32 response.setHeader("Cache-Control", "no-cache", false); |
|
33 response.setHeader("Content-Type", "text/plain", false); |
|
34 |
|
35 if (getState("postHost") == request.host) { |
|
36 var result = getState("optionsHeader"); |
|
37 if (result) { |
|
38 response.write("Success: expected OPTIONS request with " + result + |
|
39 " header"); |
|
40 } else if (getState("badGet") == 1) { |
|
41 response.write("Error: unexpected GET request"); |
|
42 } |
|
43 } else { |
|
44 setState("badGet", "1"); |
|
45 response.write("Error: this response should never be seen"); |
|
46 } |
|
47 return; |
|
48 } |
|
49 |
|
50 response.setStatusLine(request.httpVersion, 501, "Not Implemented"); |
|
51 } |