| <!DOCTYPE html> |
| <meta charset=utf-8> |
| <title>CORS - redirect with preflight</title> |
| <meta name=author title="Odin Hørthe Omdal" href="mailto:odiho@opera.com"> |
| <meta name=author title="Fernando Jiménez Moreno" href="mailto:ferjmoreno@gmail.com"> |
| |
| <script src=/resources/testharness.js></script> |
| <script src=/resources/testharnessreport.js></script> |
| <script src=support.js?pipe=sub></script> |
| |
| <h1>Redirect with preflight</h1> |
| |
| <div id=log></div> |
| <script> |
| |
| // Request count for cache busting and easy identifying of request in traffic |
| // analyzer. |
| var req_c = 0; |
| |
| var CROSSDOMAIN_URL = CROSSDOMAIN + 'resources/cors-makeheader.py?'; |
| |
| /* |
| * Redirection after successfull (200) preflight. |
| */ |
| function redir_after_successfull_preflight(code) { |
| var desc = 'Should allow redirect ' + code + ' after succesful (200) preflight'; |
| async_test(desc).step(function() { |
| var client = new XMLHttpRequest(); |
| var redirect = encodeURIComponent( |
| CROSSDOMAIN + 'resources/cors-makeheader.py?headers=x-test&' + req_c++ |
| ); |
| |
| client.open('GET', CROSSDOMAIN + 'resources/cors-makeheader.py?' |
| + 'preflight=200&headers=x-test&location=' |
| + redirect + '&code=' + code + '&' + req_c++, |
| true /* async */); |
| client.setRequestHeader('x-test', 'test'); |
| client.onreadystatechange = this.step_func(function() { |
| assert_equals(client.status, 200, 'Successfull redirect'); |
| this.done(); |
| }); |
| client.send(null); |
| }); |
| } |
| [301, 302, 303, 307, 308].forEach(redir_after_successfull_preflight); |
| |
| </script> |