Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  referrer_change_server.sjs   Sprache: unbekannt

 
var BASE_URL = "example.com/tests/dom/base/test/referrer_change_server.sjs";

function createTestUrl(aPolicy, aAction, aName) {
  return (
    "http://" +
    BASE_URL +
    "?" +
    "action=" +
    aAction +
    "&" +
    "policy=" +
    aPolicy +
    "&" +
    "name=" +
    aName +
    "&" +
    "type=link"
  );
}

function createTest(aMetaPolicy, aReferrerPolicy, aName) {
  return (
    "<!DOCTYPE HTML>\n\
         <html>" +
    '<meta name="referrer" content="' +
    aMetaPolicy +
    '">' +
    "<body>" +
    '<a href="' +
    createTestUrl(aReferrerPolicy, "test", aName + aReferrerPolicy) +
    '" id="link">' +
    aReferrerPolicy +
    "</a>" +
    "<script>" +
    // LOAD EVENT (of the test)
    // fires when the page is loaded, then click link
    // first change meta referrer, then click link
    'window.addEventListener("load", function() {\n\
                 document.getElementsByName("referrer")[0].content = "' +
    aReferrerPolicy +
    '";\n\
                 document.getElementById("link").click();\n\
               }.bind(window), false);' +
    "</script>\n\
           </body>\n\
         </html>"
  );
}

function createTest2(aMetaPolicy, aReferrerPolicy, aName) {
  return (
    "<!DOCTYPE HTML>\n\
         <html>" +
    '<meta name="referrer" content="' +
    aMetaPolicy +
    '">' +
    "<body>" +
    '<a href="' +
    createTestUrl(aReferrerPolicy, "test", aName + aReferrerPolicy) +
    '" id="link">' +
    aReferrerPolicy +
    "</a>" +
    "<script>" +
    // LOAD EVENT (of the test)
    // fires when the page is loaded, then click link
    // first change meta referrer, then click link
    'window.addEventListener("load", function() {\n\
                 document.getElementsByName("referrer")[0].setAttribute("content", "' +
    aReferrerPolicy +
    '");\n\
                 document.getElementById("link").click();\n\
               }.bind(window), false);' +
    "</script>\n\
           </body>\n\
         </html>"
  );
}

function handleRequest(request, response) {
  var sharedKey = "referrer_change_server.sjs";
  var params = request.queryString.split("&");
  var action = params[0].split("=")[1];

  if (action === "resetState") {
    var state = getSharedState(sharedKey);
    state = {};
    setSharedState(sharedKey, JSON.stringify(state));
    response.write("");
    return;
  }
  if (action === "test") {
    // ?action=test&policy=origin&name=name
    var policy = params[1].split("=")[1];
    var name = params[2].split("=")[1];
    var type = params[3].split("=")[1];
    var result = getSharedState(sharedKey);

    if (result === "") {
      result = {};
    } else {
      result = JSON.parse(result);
    }

    if (!result.tests) {
      result.tests = {};
    }

    var referrerLevel = "none";
    var test = {};
    if (request.hasHeader("Referer")) {
      let referrer = request.getHeader("Referer");
      if (referrer.indexOf("referrer_change_server") > 0) {
        referrerLevel = "full";
      } else if (referrer == "http://mochi.test:8888") {
        referrerLevel = "origin";
      }
      test.referrer = request.getHeader("Referer");
    } else {
      test.referrer = "";
    }
    test.policy = referrerLevel;
    test.expected = policy;

    result.tests[name] = test;

    setSharedState(sharedKey, JSON.stringify(result));

    // forward link click to redirect URL to finish test
    if (type === "link") {
      var loc =
        "https://example.com/tests/dom/base/test/file_change_policy_redirect.html";
      response.setStatusLine("1.1", 302, "Found");
      response.setHeader("Location", loc, false);
    }

    return;
  }
  if (action === "get-test-results") {
    // ?action=get-result
    response.setHeader("Cache-Control", "no-cache", false);
    response.setHeader("Content-Type", "text/plain", false);
    response.write(getSharedState(sharedKey));
    return;
  }
  if (action === "generate-policy-test") {
    // ?action=generate-policy-test&referrerPolicy=b64-encoded-string&name=name&newPolicy=b64-encoded-string
    response.setHeader("Cache-Control", "no-cache", false);
    response.setHeader("Content-Type", "text/html; charset=utf-8", false);
    var referrerPolicy = unescape(params[1].split("=")[1]);
    var name = unescape(params[2].split("=")[1]);
    var newPolicy = params[3].split("=")[1];

    response.write(createTest(referrerPolicy, newPolicy, name));
    return;
  }
  if (action === "generate-policy-test2") {
    // ?action=generate-policy-test2&referrerPolicy=b64-encoded-string&name=name&newPolicy=b64-encoded-string
    response.setHeader("Cache-Control", "no-cache", false);
    response.setHeader("Content-Type", "text/html; charset=utf-8", false);
    var referrerPolicy = unescape(params[1].split("=")[1]);
    var name = unescape(params[2].split("=")[1]);
    var newPolicy = params[3].split("=")[1];

    response.write(createTest2(referrerPolicy, newPolicy, name));
    return;
  }

  response.write("I don't know action " + action);
}

[ Dauer der Verarbeitung: 0.1 Sekunden  (vorverarbeitet)  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge