from wptserve.utils import isomorphic_encode def main(request, response): response.headers.set(b"Access-Control-Allow-Origin", request.headers.get(b"origin")) response.headers.set(b"Access-Control-Expose-Headers", b"X-Request-Method") if request.method == u'OPTIONS': response.headers.set(b"Access-Control-Allow-Methods", b"GET, CHICKEN, HEAD, POST, PUT") if b'headers' in request.GET: response.headers.set(b"Access-Control-Allow-Headers", request.GET.first(b'headers')) response.headers.set(b"X-Request-Method", isomorphic_encode(request.method)) response.headers.set(b"X-A-C-Request-Method", request.headers.get(b"Access-Control-Request-Method", b"")) #This should reasonably work for most response codes. try: code = int(request.GET.first(b"code", 200)) except ValueError: code = 200 text = request.GET.first(b"text", b"OMG") if request.method == u"OPTIONS" and b"preflight" in request.GET: try: code = int(request.GET.first(b'preflight')) except KeyError: pass status = code, text if b"type" in request.GET: response.headers.set(b"Content-Type", request.GET.first(b'type')) body = request.GET.first(b'content', b"") return status, [], body