simple-requests.htm (3195B)
1 <!DOCTYPE html> 2 <meta charset=utf-8> 3 <title>CORS - simple requests</title> 4 <meta name=author title="Odin Hørthe Omdal" href="mailto:odiho@opera.com"> 5 6 <script src=/resources/testharness.js></script> 7 <script src=/resources/testharnessreport.js></script> 8 <script src=support.js?pipe=sub></script> 9 <script src=/common/utils.js></script> 10 11 <h1>Simple requests</h1> 12 <p>Simple requests shouldn't trigger preflight</p> 13 14 <div id=log></div> 15 <script> 16 17 var test_c = 0; 18 19 function check_simple(method, headers) 20 { 21 test(function() { 22 var client = new XMLHttpRequest() 23 var uuid_token = token(); 24 client.open(method, CROSSDOMAIN + 'resources/preflight.py?token=' 25 + uuid_token, false) 26 for (head in headers) 27 client.setRequestHeader(head, headers[head]) 28 client.send("data") 29 assert_equals(client.getResponseHeader('content-type'), "text/plain") 30 if (method == 'HEAD') 31 assert_equals(client.response, '', 'response') 32 else 33 assert_equals(client.response, 'NO', 'response') 34 35 client.open('GET', 'resources/preflight.py?check&token=' 36 + uuid_token, false) 37 client.send("data") 38 assert_equals(client.response, "0", "Found preflight log") 39 }, 40 'No preflight ' + method + ' and ' + JSON.stringify(headers)) 41 } 42 43 function check_simple_headers(headers) { 44 check_simple('GET', headers) 45 check_simple('HEAD', headers) 46 check_simple('POST', headers) 47 } 48 49 check_simple_headers({'Accept': 'test'}) 50 check_simple_headers({'accept-language': 'test'}) 51 check_simple_headers({'CONTENT-language': 'test'}) 52 53 check_simple_headers({'Content-Type': 'application/x-www-form-urlencoded'}) 54 check_simple_headers({'content-type': 'multipart/form-data'}) 55 check_simple_headers({'content-type': 'text/plain'}) 56 57 check_simple_headers({ 58 'accept': 'test', 59 'accept-language': 'test', 60 'content-language': 'test', 61 'content-type': 'text/plain; parameter=whatever' 62 }) 63 64 check_simple('Get', {'content-type': 'text/plain; parameter=extra_bonus'}) 65 check_simple('post', {'content-type': 'text/plain'}) 66 67 /* Extra async test */ 68 69 var simple_async = async_test("Check simple headers (async)") 70 simple_async.step(function (){ 71 var time = new Date().getTime(), 72 client = new XMLHttpRequest() 73 var uuid_token = token(); 74 client.open('POST', CROSSDOMAIN + 'resources/preflight.py?token=' 75 + uuid_token, true) 76 77 client.setRequestHeader('Accept', 'jewelry') 78 client.setRequestHeader('accept-language', 'nn-NO,nn,en') 79 client.setRequestHeader('content-type', 'text/plain; parameter=extra') 80 client.setRequestHeader('content-Language', 'nn-NO') 81 82 client.onload = simple_async.step_func(function() { 83 assert_equals(client.getResponseHeader('content-type'), "text/plain", 'content-type response header') 84 assert_equals(client.response, 'NO', 'response') 85 simple_async.done() 86 }) 87 client.onerror = simple_async.step_func(function () { assert_unreached('onerror') }) 88 client.send() 89 }) 90 </script>