cookies.py (1049B)
1 import json 2 3 # TODO(https://crbug.com/406819294): Simplify relative import for util. 4 import importlib 5 util = importlib.import_module("speculation-rules.prefetch.resources.util") 6 7 def main(request, response): 8 cookies = json.dumps({ 9 key.decode("utf-8"): request.cookies[key].value.decode("utf-8") 10 for key in request.cookies 11 }) 12 13 sec_purpose = request.headers.get("Sec-Purpose", b"").decode("utf-8") 14 15 cookie_count = int( 16 request.cookies[b"count"].value) if b"count" in request.cookies else 0 17 response.set_cookie("count", f"{cookie_count+1}", 18 secure=True, samesite="None") 19 response.set_cookie( 20 "type", "prefetch" if sec_purpose.startswith("prefetch") else "navigate") 21 22 headers = [(b"Content-Type", b"text/html"), (b"Cache-Control", b"no-store")] 23 24 if b"cookieindices" in request.GET: 25 headers.extend([(b"Vary", b"Cookie"), (b"Cookie-Indices", b"\"vary1\", \"vary2\"")]) 26 27 content = util.get_executor_html( 28 request, 29 f'window.requestCookies = {cookies};') 30 31 return headers, content