fix(discord-bridge): dashboard-ul ramanea gol la /claude — lipsea <base href>
Simptom: pagina se incarca prin tailscale, dar niciun API nu era cerut; in dashboard.log se vedea doar GET / si nimic altceva. Cauza: --set-path taie prefixul, deci /claude si /claude/ ajung la server identic, ca "/". Fara slash final, URL-urile relative se rezolvau la radacina hostului (https://host/api/status), unde proxy-ul nu trimite nimic incoace. Cererile nici nu ajungeau la noi, iar pagina ramanea goala fara nicio eroare. Redirectul 301 adaugat anterior nu putea ajuta: serverul nu vede forma originala a adresei. Paginile se servesc acum printr-un handler propriu care pune <base href> din DASHBOARD_PREFIX, plus Cache-Control: no-store, fiindca HTML-ul poarta de acum configuratie si o copie veche ar trimite cererile aiurea. Patru teste noi. Verificat in browser pe cazul reprodus (pagina servita pe radacina, ca prin proxy): toate cererile pleaca cu /claude/ si datele se incarca. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01B29CApsP1JkSdjYaGaHpE7
This commit is contained in:
@@ -381,3 +381,29 @@ def test_static_servit_si_sub_prefix(server_cu_prefix):
|
||||
server_cu_prefix.login()
|
||||
status, data, _ = server_cu_prefix.call("/claude/static/app.css")
|
||||
assert status == 200 and ".card" in data["_html"]
|
||||
|
||||
|
||||
def test_base_href_pus_cand_exista_prefix(server_cu_prefix):
|
||||
"""Proxy-ul taie prefixul, deci serverul nu poate sti daca browserul e la
|
||||
`/claude` sau `/claude/`. `<base href>` face rezolvarea determinista."""
|
||||
server_cu_prefix.login()
|
||||
_, data, _ = server_cu_prefix.call("/")
|
||||
assert '<base href="/claude/">' in data["_html"]
|
||||
|
||||
|
||||
def test_base_href_si_pe_pagina_de_login(server_cu_prefix):
|
||||
_, data, _ = server_cu_prefix.call("/login.html")
|
||||
assert '<base href="/claude/">' in data["_html"]
|
||||
|
||||
|
||||
def test_fara_prefix_nu_se_pune_base(server):
|
||||
server.login()
|
||||
_, data, _ = server.call("/")
|
||||
assert "<base" not in data["_html"]
|
||||
|
||||
|
||||
def test_paginile_nu_se_pun_in_cache(server_cu_prefix):
|
||||
"""O copie veche ar purta un `base href` gresit si ar trimite cererile aiurea."""
|
||||
server_cu_prefix.login()
|
||||
_, _, resp = server_cu_prefix.call("/")
|
||||
assert resp.headers.get("Cache-Control") == "no-store"
|
||||
|
||||
Reference in New Issue
Block a user