file_downgrade_view_source.sjs (830B)
1 "use strict"; 2 3 function handleRequest(request, response) { 4 // avoid confusing cache behaviour 5 response.setHeader("Cache-Control", "no-cache", false); 6 response.setHeader("Content-Type", "text/html", false); 7 8 let query = request.queryString.split("&"); 9 let scheme = request.scheme; 10 11 if (scheme === "https") { 12 if (query.includes("downgrade")) { 13 response.setStatusLine("1.1", 400, "Bad Request"); 14 response.write("Bad Request\n"); 15 return; 16 } 17 if (query.includes("upgrade")) { 18 response.write("view-source:https://"); 19 return; 20 } 21 } 22 23 if (scheme === "http" && query.includes("downgrade")) { 24 response.write("view-source:http://"); 25 return; 26 } 27 28 // We should arrive here when the redirection was downraded successful 29 response.write("unexpected scheme and query given"); 30 }