| <p>Test that XMLHttpRequest doesn't return a wrong cached answer when there is a Vary header in response.</p> |
| |
| <script src="/js-test-resources/js-test-pre.js"></script> |
| <script> |
| window.jsTestIsAsync = true; |
| |
| if (location.protocol != "http:" || location.host != "127.0.0.1:8000") |
| debug("This test must be run from http://127.0.0.1:8000"); |
| |
| var testStep = 1; |
| |
| function testCrossOrigin() |
| { |
| var req = new XMLHttpRequest; |
| req.open("get", "http://localhost:8000/cache/resources/xhr-vary-header-response.php"); |
| req.onload=function() { receivedResponse(req.responseText) } |
| req.send(); |
| } |
| |
| function testSameOrigin() |
| { |
| frames[0].postMessage("", "http://localhost:8000"); |
| } |
| |
| function receivedResponse(text) |
| { |
| window.responseText = text; |
| switch (testStep) { |
| case 1: |
| shouldBe("responseText", "'Cross origin response'"); |
| testStep++; |
| testSameOrigin(); |
| break; |
| case 2: |
| shouldBe("responseText", "'Same origin response'"); |
| testStep++; |
| testCrossOrigin(); |
| break; |
| case 3: |
| shouldBe("responseText", "'Cross origin response'"); |
| finishJSTest(); |
| testStep++; |
| break; |
| default: |
| debug(responseText); |
| break; |
| } |
| delete window.responseText; |
| } |
| |
| window.onmessage = function(msg) { receivedResponse(msg.data) } |
| window.onload = testCrossOrigin; |
| |
| </script> |
| |
| <button onclick="testCrossOrigin()">Make cross origin request</button> |
| <br> |
| <iframe src="http://localhost:8000/cache/resources/xhr-vary-header-subframe.html" frameborder=0 height=50></iframe> |
| <pre id=console></pre> |
| <script src="/js-test-resources/js-test-post.js"></script> |