summaryrefslogtreecommitdiffstats
path: root/dom/security/test/csp/file_redirect_worker.sjs
blob: 27df6a5fdf84ca6cf22e3bdab3770870af98cdfb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// SJS file to serve resources for CSP redirect tests
// This file redirects to a specified resource.
const THIS_SITE = "http://mochi.test:8888";
const OTHER_SITE = "http://example.com";

function handleRequest(request, response)
{
  var query = {};
  request.queryString.split('&').forEach(function (val) {
    var [name, value] = val.split('=');
    query[name] = unescape(value);
  });

  var resource = query['path'];

  response.setHeader("Cache-Control", "no-cache", false);
  var loc = '';

  // redirect to a resource on this site
  if (query["redir"] == "same") {
    loc = THIS_SITE+resource+"#"+query['page_id']
  }

  // redirect to a resource on a different site
  else if (query["redir"] == "other") {
    loc = OTHER_SITE+resource+"#"+query['page_id']
  }

  response.setStatusLine("1.1", 302, "Found");
  response.setHeader("Location", loc, false);

  response.write('<html><head><meta http-equiv="refresh" content="0; url='+loc+'">');
  return;
}