From 70a19b27ed2ca96eaf61312e54ae6c14717a284b Mon Sep 17 00:00:00 2001 From: Mike Lang Date: Mon, 31 Dec 2018 13:19:37 -0800 Subject: [PATCH] restreamer: Add CORS headers to all responses TBH I'm not sure why this is needed (i'm completely clueless about browser stuff), but apparently thrimbletrimmer needs it. --- restreamer/restreamer/main.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/restreamer/restreamer/main.py b/restreamer/restreamer/main.py index 51e02ad..671ddc4 100644 --- a/restreamer/restreamer/main.py +++ b/restreamer/restreamer/main.py @@ -60,6 +60,23 @@ def has_path_args(fn): return _has_path_args +def cors(app): + """WSGI middleware that sets CORS headers""" + HEADERS = [ + ("Access-Control-Allow-Credentials", "false"), + ("Access-Control-Allow-Headers", "*"), + ("Access-Control-Allow-Methods", "GET,POST,HEAD"), + ("Access-Control-Allow-Origin", "*"), + ("Access-Control-Max-Age", "86400"), + ] + def handle(environ, start_response): + def _start_response(status, headers, exc_info=None): + headers += HEADERS + return start_response(status, headers, exc_info) + return app(environ, _start_response) + return handle + + @app.route('/files//') @has_path_args def list_hours(stream, variant): @@ -168,7 +185,7 @@ def generate_media_playlist(stream, variant): def main(host='0.0.0.0', port=8000, base_dir='.'): app.static_folder = base_dir - server = WSGIServer((host, port), app) + server = WSGIServer((host, port), cors(app)) def stop(): logging.info("Shutting down")