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