#!/usr/bin/env python3 import json import os import sys file = __file__.split(':/cygwin')[-1] http_root = os.path.dirname(os.path.dirname(os.path.abspath(os.path.dirname(file)))) sys.path.insert(0, http_root) from urllib.parse import unquote, unquote_to_bytes query = os.environ.get('QUERY_STRING', '') split_query = {} for pair in query.split('&'): split_query[unquote(pair.split('=')[0])] = '='.join(pair.split('=')[1:]) sys.stdout.write('Content-Type: text/html\r\n') origin = split_query.get('origin', 'none') if origin != 'none' and '%00' not in origin: sys.stdout.write('Access-Control-Allow-Origin: ') sys.stdout.flush() sys.stdout.buffer.write(unquote_to_bytes(origin)) sys.stdout.write('\r\n') headers = split_query.get('headers') if headers: sys.stdout.write('Access-Control-Allow-Headers: ') sys.stdout.flush() sys.stdout.buffer.write(unquote_to_bytes(headers)) sys.stdout.write('\r\n') methods = split_query.get('methods') if methods: sys.stdout.write('Access-Control-Allow-Methods: ') sys.stdout.flush() sys.stdout.buffer.write(unquote_to_bytes(methods)) sys.stdout.write('\r\n') sys.stdout.write('\r\n') headers = {} headers['get_value'] = unquote(split_query.get('get_value', '')) for headername, headervalue in os.environ.items(): if headername in ['CONTENT_TYPE', 'CONTENT_LENGTH']: headers[headername.lower().replace('_', '-')] = headervalue if not headername.startswith('HTTP_'): continue headers[headername[5:].lower().replace('_', '-')] = headervalue sys.stdout.write(json.dumps(headers))