Fix duplicate CORS headers for tile fallbacks

This commit is contained in:
2026-07-25 01:31:58 -03:00
parent fa3fa18342
commit dd987de699
2 changed files with 14 additions and 18 deletions
+7 -10
View File
@@ -59,15 +59,10 @@ def validate_callback_provider(value: str | None) -> CallbackProvider | None:
return CallbackProvider(origin=f"https://{parsed.netloc}", path_template=parsed.path)
def render_location(name: str, provider: CallbackProvider | None, x: str, y: str, z: str, label: str) -> str:
headers = """ add_header Cache-Control \"public, max-age=86400, stale-while-revalidate=604800\" always;
add_header Access-Control-Allow-Origin \"*\" always;
add_header Access-Control-Allow-Methods \"GET, HEAD, OPTIONS\" always;
add_header Access-Control-Allow-Headers \"Origin, Range, Accept\" always;"""
def render_location(name: str, provider: CallbackProvider | None, x: str, y: str, z: str) -> str:
if provider is None:
return f"""location @{name} {{
try_files /tiles/empty.png =500;
{headers}
}}
"""
rendered_path = provider.path_template.replace("{x}", f"${x}").replace("{y}", f"${y}").replace("{z}", f"${z}")
@@ -79,8 +74,10 @@ def render_location(name: str, provider: CallbackProvider | None, x: str, y: str
proxy_cache callback_provider;
proxy_cache_valid 200 7d;
proxy_cache_use_stale error timeout http_500 http_502 http_503 http_504;
add_header X-Map-Source \"Callback provider {label}\" always;
{headers}
proxy_hide_header Cache-Control;
proxy_hide_header Access-Control-Allow-Origin;
proxy_hide_header Access-Control-Allow-Methods;
proxy_hide_header Access-Control-Allow-Headers;
}}
"""
@@ -88,9 +85,9 @@ def render_location(name: str, provider: CallbackProvider | None, x: str, y: str
def render_nginx(provider: CallbackProvider | None) -> str:
return (
"# Generated at container startup. Do not edit.\n"
+ render_location("callback_provider_tile", provider, "tile_x", "tile_y", "tile_z", "fallback")
+ render_location("callback_provider_tile", provider, "tile_x", "tile_y", "tile_z")
+ "\n"
+ render_location("callback_provider_base", provider, "base_x", "base_y", "base_z", "base")
+ render_location("callback_provider_base", provider, "base_x", "base_y", "base_z")
)