summaryrefslogtreecommitdiffstats
path: root/dom/security/test/csp/file_redirect_worker.sjs
blob: 5cf211484e0926f3bd5e5c77fc0069681b4e0ba0 (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 + '">'
  );
}