tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

referrer-policy-test-loader.h2.py (1413B)


      1 import os
      2 import time
      3 
      4 
      5 def handle_headers(frame, request, response):
      6    headers = []
      7    referrer_policy = request.GET.first(b"referrer-policy")
      8    headers.append((b"referrer-policy", referrer_policy))
      9 
     10    preload_url = request.GET.first(b"same-origin-preload-url").decode()
     11    link_header_value = "<{}>; rel=preload; as=script".format(preload_url)
     12    headers.append((b"link", link_header_value))
     13    preload_url = request.GET.first(b"cross-origin-preload-url").decode()
     14    link_header_value = "<{}>; rel=preload; as=script".format(preload_url)
     15    headers.append((b"link", link_header_value))
     16 
     17    # Send a 103 response.
     18    early_hints = [(b":status", b"103")]
     19    for header in headers:
     20        early_hints.append(header)
     21    response.writer.write_raw_header_frame(headers=early_hints,
     22                                           end_headers=True)
     23 
     24    # Simulate the response generation is taking time.
     25    time.sleep(0.2)
     26 
     27    response.status = 200
     28    response.headers["content-type"] = "text/html"
     29    for (name, value) in headers:
     30        response.headers[name] = value
     31    response.write_status_headers()
     32 
     33 
     34 def main(request, response):
     35    current_dir = os.path.dirname(os.path.realpath(__file__))
     36    file_path = os.path.join(current_dir, "referrer-policy-test.html")
     37    with open(file_path, "r") as f:
     38        test_content = f.read()
     39    response.writer.write_data(item=test_content, last=True)