mirror of
https://github.com/servo/servo
synced 2026-05-03 12:52:25 +02:00
81 lines
2.5 KiB
HTML
81 lines
2.5 KiB
HTML
<!DOCTYPE html>
|
|
<meta charset=utf-8>
|
|
<title>CORS status</title>
|
|
<meta name=help href=http://dvcs.w3.org/hg/cors/raw-file/tip/Overview.html#cross-origin-request-with-preflight-0>
|
|
<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>
|
|
|
|
<h1>The returned status code in different scenarios</h1>
|
|
|
|
<script>
|
|
|
|
var counter = 0
|
|
|
|
function testit(allow, preflight, response, status) {
|
|
async_test(
|
|
(++counter) + '. ' +
|
|
(allow ? 'CORS allowed' : 'CORS disallowed') +
|
|
(preflight ? ', preflight status '+preflight : '') +
|
|
(response ? ', response status '+response : '') +
|
|
'.'
|
|
).step(function() {
|
|
var client = new XMLHttpRequest()
|
|
client.open('GET', CROSSDOMAIN + 'resources/cors-makeheader.py?' + counter +
|
|
(allow ? '&headers=x-custom': '&origin=none') +
|
|
(response ? '&code='+response : '') +
|
|
(preflight ? '&preflight='+preflight : '')
|
|
)
|
|
|
|
if (preflight)
|
|
client.setRequestHeader('X-Custom', 'preflight')
|
|
|
|
client.onload = this.step_func(function() {
|
|
if (!status)
|
|
assert_unreached("load event")
|
|
|
|
/* Allow spurious error events to fire */
|
|
setTimeout(this.step_func(function() {
|
|
assert_equals(client.status, status, "status")
|
|
this.done()
|
|
}), 10)
|
|
})
|
|
|
|
client.onerror = this.step_func(function() {
|
|
if (status)
|
|
assert_unreached("error event")
|
|
|
|
assert_equals(client.readyState, client.DONE, 'readyState')
|
|
assert_equals(client.status, 0, 'status')
|
|
this.done()
|
|
})
|
|
|
|
client.send()
|
|
|
|
})
|
|
}
|
|
|
|
/* allow pref resp status */
|
|
testit(false, null, 400, 0)
|
|
testit(false, 200, null, 0)
|
|
testit(true, null, 400, 400)
|
|
testit(true, 200, 400, 400)
|
|
testit(true, 400, null, 0)
|
|
|
|
</script>
|
|
|
|
<pre>
|
|
allowed preflight response | status |
|
|
------- --------- -------- | ------ |
|
|
1 no x 400 | 0 |
|
|
2 no 200 x | 0 |
|
|
3 yes x 400 | 400 |
|
|
4 yes 200 400 | 400 |
|
|
5 yes 400 x | 0 |
|
|
</pre>
|
|
|
|
<div id=log></div>
|
|
|