From 6743dd76265d42e2ce46cc58d43e297bb9aecf4d Mon Sep 17 00:00:00 2001 From: SRHTNIN Date: Mon, 21 Sep 2026 20:48:05 +0200 Subject: [PATCH] Added proper resolving for https. --- Backend/Main.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/Backend/Main.py b/Backend/Main.py index 8684ce2..2827329 100644 --- a/Backend/Main.py +++ b/Backend/Main.py @@ -1,5 +1,6 @@ from __future__ import annotations +import json import mimetypes import sys from pathlib import Path @@ -691,6 +692,23 @@ def GetPublicMediaEndpoint(RootName: str, FilePath: str, request: Request): return StreamBinaryFile(ResolvedPath, request.headers.get("range")) +def GetForwardedScheme(request: Request) -> str: + ForwardedProto = request.headers.get("x-forwarded-proto") + if ForwardedProto: + return ForwardedProto.split(",")[0].strip() + + CfVisitor = request.headers.get("cf-visitor") + if CfVisitor: + try: + ParsedScheme = json.loads(CfVisitor).get("scheme") + if ParsedScheme: + return ParsedScheme + except (json.JSONDecodeError, AttributeError): + pass + + return request.url.scheme + + FrontendDist = ApplicationDirectory.parent / "Frontend" / "dist" if FrontendDist.is_dir(): @@ -708,7 +726,9 @@ if FrontendDist.is_dir(): Segments = [Segment for Segment in FullPath.split("/") if Segment] if Segments: - BaseUrl = f"{request.url.scheme}://{request.url.netloc}" + Scheme = GetForwardedScheme(request) + Host = request.headers.get("x-forwarded-host", request.url.netloc) + BaseUrl = f"{Scheme}://{Host}" OgTags = ( BuildOgTags(Segments[0], "/".join(Segments[1:]), FullPath.endswith("/"), BaseUrl) or ""