diff --git a/app/api/middleware.py b/app/api/middleware.py index ef63785..5387d1e 100644 --- a/app/api/middleware.py +++ b/app/api/middleware.py @@ -1,3 +1,4 @@ +import os from base58 import b58decode from sanic import response as sanic_response from uuid import uuid4 @@ -17,12 +18,26 @@ from app.core.log_context import ( ) +ENABLE_INTERNAL_CORS = os.getenv("ENABLE_INTERNAL_CORS", "1").lower() in {"1", "true", "yes"} + + def attach_headers(response, request=None): response.headers.pop("Access-Control-Allow-Origin", None) - response.headers["Access-Control-Allow-Origin"] = "*" - response.headers["Access-Control-Allow-Methods"] = "GET, POST, OPTIONS" - response.headers["Access-Control-Allow-Headers"] = "Origin, Content-Type, Accept, Authorization, Referer, User-Agent, Sec-Fetch-Dest, Sec-Fetch-Mode, Sec-Fetch-Site, x-file-name, x-last-chunk, x-chunk-start, x-upload-id, x-request-id" + response.headers.pop("Access-Control-Allow-Methods", None) + response.headers.pop("Access-Control-Allow-Headers", None) response.headers.pop("Access-Control-Allow-Credentials", None) + + if not ENABLE_INTERNAL_CORS: + return response + + response.headers["Access-Control-Allow-Origin"] = "*" + response.headers["Access-Control-Allow-Methods"] = "GET, POST, OPTIONS, PATCH, HEAD" + response.headers["Access-Control-Allow-Headers"] = ( + "Origin, Content-Type, Accept, Authorization, Referer, User-Agent, Sec-Fetch-Dest, Sec-Fetch-Mode, " + "Sec-Fetch-Site, Tus-Resumable, tus-resumable, Upload-Length, upload-length, Upload-Offset, upload-offset, " + "Upload-Metadata, upload-metadata, Upload-Defer-Length, upload-defer-length, Upload-Concat, upload-concat, " + "x-file-name, x-last-chunk, x-chunk-start, x-upload-id, x-request-id" + ) return response