summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/resource-timing/resources/cacheable-and-validated.py
blob: 97de8662777de8fda9b679dfe550106bb2c1bbb6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
def main(request, response):
    # Headers need to be set before `response.writer` writes out the response.
    tao = request.GET.get(b'timing_allow_origin')
    if tao:
      response.headers.set(b"Timing-Allow-Origin", tao)

    if b'origin' in request.headers:
      origin = request.headers[b'origin']
      response.headers.set(b'Access-Control-Allow-Origin', origin)

    content = request.GET.first(b'content')
    response.headers.set(b'Cache-Control', b'max-age=60')
    response.headers.set(b'ETag', b'assdfsdfe')

    # Handle CORS-preflights of non-simple requests.
    if request.method == 'OPTIONS':
      response.status = 204
      requested_method = request.headers.get(b"Access-Control-Request-Method")
      if requested_method:
        response.headers.set(b"Access-Control-Allow-Methods", requested_method)
      requested_headers = request.headers.get(b"Access-Control-Request-Headers")
      if requested_headers:
        response.headers.set(b"Access-Control-Allow-Headers", requested_headers)
    else:
      if 'Cache-Control' in request.headers:
        response.status = (304, b'NotModified')
      else:
        response.status = (200, b'OK')
        response.write_status_headers()
        response.writer.write(content)