preflight-partitioning.py (1264B)
1 def main(request, response): 2 headers = [(b"Content-Type", b"text/plain")] 3 headers.append((b"Access-Control-Allow-Origin", b"*")) 4 5 if request.method == u"GET": 6 token = request.GET.first(b"token") 7 value = request.server.stash.take(token) 8 if value == None: 9 body = u"0" 10 else: 11 if request.GET.first(b"check", None) == b"keep": 12 request.server.stash.put(token, value) 13 body = u"1" 14 15 return headers, body 16 17 if request.method == u"OPTIONS": 18 if not b"Access-Control-Request-Method" in request.headers: 19 response.set_error(400, u"No Access-Control-Request-Method header") 20 return u"ERROR: No access-control-request-method in preflight!" 21 22 headers.append((b"Access-Control-Allow-Methods", 23 request.headers[b'Access-Control-Request-Method'])) 24 25 if b"max_age" in request.GET: 26 headers.append((b"Access-Control-Max-Age", request.GET[b'max_age'])) 27 28 if b"token" in request.GET: 29 request.server.stash.put(request.GET.first(b"token"), 1) 30 31 headers.append((b"Access-Control-Allow-Headers", b"x-print")) 32 33 body = request.headers.get(b"x-print", b"NO") 34 35 return headers, body