35 lines
1.5 KiB
Python
35 lines
1.5 KiB
Python
def main(request, response):
|
|
"""
|
|
This file is intended to be requested twice to verify that the correct headers
|
|
are included for images.
|
|
1. Make an initial request for an img. The `sec-browsing-topics` header will
|
|
be stored for step 2. The request will be redirected to an image.
|
|
2. Make a request with the query parameter set. The stashed header from the
|
|
first step will be returned in the response content.
|
|
|
|
Parameters:
|
|
`token` should be a unique UUID request parameter for the duration of this
|
|
request. It will get stored in the server stash and will be used later in
|
|
a query request.
|
|
`query` should be a request parameter indicating the request would like
|
|
to know the last `sec-browsing-topics` header with that token.
|
|
"""
|
|
|
|
token = request.GET.first(b"token", None)
|
|
is_query = request.GET.first(b"query", None) is not None
|
|
topics_header = request.headers.get(b"sec-browsing-topics", b"NO_TOPICS_HEADER")
|
|
|
|
queried_topics_header = b"NO_PREVIOUS_REQUEST"
|
|
with request.server.stash.lock:
|
|
value = request.server.stash.take(token)
|
|
if value is not None:
|
|
queried_topics_header = value
|
|
if not is_query:
|
|
request.server.stash.put(token, topics_header)
|
|
|
|
if is_query:
|
|
return (200, [(b"Access-Control-Allow-Origin", b"*")], queried_topics_header)
|
|
|
|
headers = [(b"Location", "pixel.png"),
|
|
(b"Access-Control-Allow-Origin", b"*")]
|
|
return 301, headers, b""
|