Revision b2e3ab765e26436850208dbdcf747c3be75b1999 authored by Ben Kelly on 08 April 2016, 10:47:01 UTC, committed by James Graham on 08 April 2016, 11:00:29 UTC
Upstreamed from https://bugzilla.mozilla.org/show_bug.cgi?id=1262624
1 parent db9c8c9
redirect-userinfo.htm
<!DOCTYPE html>
<meta charset=utf-8>
<title>CORS - redirect with userinfo</title>
<meta name=author title="Odin Hørthe Omdal" href="mailto:odinho@opera.com">
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src=support.js?pipe=sub></script>
<h1>CORS userinfo redirect handling</h1>
<div id=log></div>
<script>
// Test count for cache busting and easy identifying of request in traffic analyzer
var num_test = 0
shouldFail("Disallow redirect with userinfo (//user:pass@)", [
CROSSDOMAIN + "resources/cors-makeheader.py?",
CROSSDOMAIN.replace("http://", "http://test:test@") + "resources/cors-makeheader.py?"]);
shouldFail("Disallow redirect with userinfo (//user:@)", [
CROSSDOMAIN + "resources/cors-makeheader.py?",
CROSSDOMAIN.replace("http://", "http://user:@") + "resources/cors-makeheader.py?"]);
shouldFail("Disallow redirect with userinfo (//user@)", [
CROSSDOMAIN + "resources/cors-makeheader.py?",
CROSSDOMAIN.replace("http://", "http://user:@") + "resources/cors-makeheader.py?"]);
shouldFail("Disallow redirect with userinfo (//:@)", [
CROSSDOMAIN + "resources/cors-makeheader.py?",
CROSSDOMAIN.replace("http://", "http://:@") + "resources/cors-makeheader.py?"]);
shouldFail("Disallow redirect with userinfo (//:pass@)", [
CROSSDOMAIN + "resources/cors-makeheader.py?",
CROSSDOMAIN.replace("http://", "http://:pass@") + "resources/cors-makeheader.py?"]);
shouldPass("Allow redirect with userinfo (//@)", [
CROSSDOMAIN + "resources/cors-makeheader.py?",
CROSSDOMAIN.replace("http://", "http://@") + "resources/cors-makeheader.py?"]);
function shouldFail(desc, urls) {
var test_id = num_test,
t = async_test(desc);
num_test++;
t.step(function() {
var client = new XMLHttpRequest();
client.open('GET', buildURL(urls, test_id));
client.onload = t.step_func(function() {
assert_false(!!client.response, "Got response");
});
client.onerror = t.step_func(function(e) {
t.done();
});
client.send(null)
});
}
function shouldPass(desc, urls) {
var test_id = num_test,
t = async_test(desc);
num_test++;
t.step(function() {
var client = new XMLHttpRequest();
client.open('GET', buildURL(urls, test_id));
client.onreadystatechange = t.step_func(function() {
if (client.readyState != client.DONE)
return;
assert_true(!!client.response, "Got response");
r = JSON.parse(client.response)
assert_equals(r['get_value'], 'last', 'get_value')
t.done();
});
client.send(null)
});
}
function buildURL(urls, id) {
var tmp_url;
if (typeof(urls) == "string") {
return urls + "&" + id + "_0";
}
for (var i = urls.length; i--; ) {
if (!tmp_url)
{
tmp_url = urls[i] + "&get_value=last&" + id + "_" + i;
continue;
}
tmp_url = urls[i]
+ "&location="
+ encodeURIComponent(tmp_url)
+ "&" + id + "_" + i;
}
return tmp_url;
}
</script>
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...