// SJS file for CSP redirect mochitests
// This file serves pages which can optionally specify a Content Security Policy
function handleRequest(request, response)
{
var query = {};
request.queryString.split('&').forEach(function (val) {
var [name, value] = val.split('=');
query[name] = unescape(value);
});
response.setHeader("Cache-Control", "no-cache", false);
response.setHeader("Content-Type", "text/html", false);
var resource = "/tests/content/base/test/file_csp_redirects_resource.sjs";
// CSP header value
if (query["csp"] == 1) {
if (query["spec"] == 1) {
response.setHeader("Content-Security-Policy", "default-src 'self' ; style-src 'self' 'unsafe-inline'", false);
} else {
response.setHeader("X-Content-Security-Policy", "allow 'self'", false);
}
}
// downloadable font that redirects to another site
if (query["testid"] == "font-src") {
var resp = '
' +
'
test
';
response.write(resp);
return;
}
if (query["testid"] == "font-src-spec-compliant") {
var resp = '' +
'
test
';
response.write(resp);
return;
}
// iframe that redirects to another site
if (query["testid"] == "frame-src") {
response.write('');
return;
}
if (query["testid"] == "frame-src-spec-compliant") {
response.write('');
return;
}
// image that redirects to another site
if (query["testid"] == "img-src") {
response.write('');
return;
}
if (query["testid"] == "img-src-spec-compliant") {
response.write('');
return;
}
// video content that redirects to another site
if (query["testid"] == "media-src") {
response.write('');
return;
}
if (query["testid"] == "media-src-spec-compliant") {
response.write('');
return;
}
// object content that redirects to another site
if (query["testid"] == "object-src") {
response.write('');
return;
}
if (query["testid"] == "object-src-spec-compliant") {
response.write('');
return;
}
// external script that redirects to another site
if (query["testid"] == "script-src") {
response.write('');
return;
}
if (query["testid"] == "script-src-spec-compliant") {
response.write('');
return;
}
// external stylesheet that redirects to another site
if (query["testid"] == "style-src") {
response.write('');
return;
}
if (query["testid"] == "style-src-spec-compliant") {
response.write('');
return;
}
// worker script resource that redirects to another site
if (query["testid"] == "worker") {
response.write('');
return;
}
if (query["testid"] == "worker-spec-compliant") {
response.write('');
return;
}
// script that XHR's to a resource that redirects to another site
if (query["testid"] == "xhr-src") {
response.write('');
return;
}
if (query["testid"] == "xhr-src-spec-compliant") {
response.write('');
return;
}
}