| <!DOCTYPE html> |
| <meta charset=utf-8> |
| <title>CORS - simple requests</title> |
| <meta name=author title="Odin Hørthe Omdal" href="mailto:odiho@opera.com"> |
| |
| <script src=/resources/testharness.js></script> |
| <script src=/resources/testharnessreport.js></script> |
| <script src=support.js?pipe=sub></script> |
| <script src=/common/utils.js></script> |
| |
| <h1>Simple requests</h1> |
| <p>Simple requests shouldn't trigger preflight</p> |
| |
| <div id=log></div> |
| <script> |
| |
| var test_c = 0; |
| |
| function check_simple(method, headers) |
| { |
| async_test(function() { |
| var client = new XMLHttpRequest() |
| var uuid_token = token(); |
| client.open(method, CROSSDOMAIN + 'resources/preflight.py?token=' |
| + uuid_token, true) |
| for (head in headers) |
| client.setRequestHeader(head, headers[head]) |
| client.onload = this.step_func(function(e){ |
| assert_equals(client.getResponseHeader('content-type'), "text/plain") |
| if (method == 'HEAD') |
| assert_equals(client.response, '', 'response') |
| else |
| assert_equals(client.response, 'NO', 'response') |
| this.done() |
| }) |
| client.onerror = this.step_func(function(e){ |
| assert_unreached("should succeed") |
| }) |
| client.send("data") |
| |
| client.open('GET', 'resources/preflight.py?check&token=' |
| + uuid_token, true) |
| client.onload = this.step_func(function(e){ |
| assert_equals(client.response, "0", "Found preflight log") |
| this.done() |
| }) |
| client.onerror = this.step_func(function(e){ |
| assert_unreached("should succeed") |
| }) |
| client.send("data") |
| }, |
| 'No preflight ' + method + ' and ' + JSON.stringify(headers)) |
| } |
| |
| function check_simple_headers(headers) { |
| check_simple('GET', headers) |
| check_simple('HEAD', headers) |
| check_simple('POST', headers) |
| } |
| |
| check_simple_headers({'Accept': 'test'}) |
| check_simple_headers({'accept-language': 'test'}) |
| check_simple_headers({'CONTENT-language': 'test'}) |
| |
| check_simple_headers({'Content-Type': 'application/x-www-form-urlencoded'}) |
| check_simple_headers({'content-type': 'multipart/form-data'}) |
| check_simple_headers({'content-type': 'text/plain'}) |
| |
| check_simple_headers({ |
| 'accept': 'test', |
| 'accept-language': 'test', |
| 'content-language': 'test', |
| 'content-type': 'text/plain; parameter=whatever' |
| }) |
| |
| check_simple('Get', {'content-type': 'text/plain; parameter=extra_bonus'}) |
| check_simple('post', {'content-type': 'text/plain'}) |
| |
| |
| /* Extra async test */ |
| |
| var simple_async = async_test("Check simple headers (async)") |
| simple_async.step(function (){ |
| var time = new Date().getTime(), |
| client = new XMLHttpRequest() |
| var uuid_token = token(); |
| client.open('POST', CROSSDOMAIN + 'resources/preflight.py?token=' |
| + uuid_token, true) |
| |
| client.setRequestHeader('Accept', 'jewelry') |
| client.setRequestHeader('accept-language', 'nn_NO,nn,en') |
| client.setRequestHeader('content-type', 'text/plain; parameter=extra') |
| client.setRequestHeader('content-Language', 'nn_NO') |
| |
| client.onload = simple_async.step_func(function() { |
| assert_equals(client.getResponseHeader('content-type'), "text/plain", 'content-type response header') |
| assert_equals(client.response, 'NO', 'response') |
| simple_async.done() |
| }) |
| client.onerror = simple_async.step_func(function () { assert_unreached('onerror') }) |
| client.send() |
| }) |
| </script> |