diff --git a/local-agent/start-agent.sh b/local-agent/start-agent.sh index 2ff238a..5588e9c 100755 --- a/local-agent/start-agent.sh +++ b/local-agent/start-agent.sh @@ -35,12 +35,18 @@ case "$MODE" in CLOUD_API_URL="https://$HOST" RELAY_URL="wss://$HOST/tunnel/connect" WS_SCHEME="https" + # ADR-019 §2.5 CORS 白名單(stage 雙入口):影片分頁 localhost 直連時, + # 瀏覽器可能從公網 HTTPS 或內網純 HTTP 任一入口開啟,兩者都要放行。 + CLOUD_ORIGINS="https://stage-9527.innovedus.com:9527,http://192.168.0.130:9527" ;; internal) HOST="192.168.0.130:9527" CLOUD_API_URL="http://$HOST" RELAY_URL="ws://$HOST/tunnel/connect" WS_SCHEME="http" + # ADR-019 §2.5 CORS 白名單:internal 走內網純 HTTP 入口;一併帶公網入口 + # 以便同一台 agent 兩種路徑都能開影片分頁(多帶白名單不會放寬安全性)。 + CLOUD_ORIGINS="http://192.168.0.130:9527,https://stage-9527.innovedus.com:9527" ;; *) echo "用法:$0 [public|internal]" >&2 @@ -105,6 +111,16 @@ echo "" export VISIONA_CLOUD_API_URL="$CLOUD_API_URL" export VISIONA_RELAY_URL="$RELAY_URL" +# ADR-019 localhost 直連的 CORS 白名單(server 讀 middleware.go:46 os.Getenv)。 +# 漏設會導致影片分頁的 preflight(OPTIONS)被 local-agent 回 403 → 前端 port 探測 +# 掃不到同機 agent → 影片分頁顯示 LOCAL_AGENT_NOT_FOUND(「需在同一台電腦操作」)。 +# 格式:逗號分隔的完整 origin(scheme+host+port 一字不差、結尾無斜線),與 +# middleware.go 的「完整 origin 精確比對」相容。 +# 尊重外部覆寫(與上方優先級 env > 內建預設一致):若使用者已設則沿用其值。 +export VISIONA_CLOUD_ORIGINS="${VISIONA_CLOUD_ORIGINS:-$CLOUD_ORIGINS}" +echo " CORS 白名單(VISIONA_CLOUD_ORIGINS):$VISIONA_CLOUD_ORIGINS" +echo "" + # public 模式:stage 用自簽憑證,agent 需明確 opt-in 跳過 TLS 驗證 # (pairing exchange + tunnel WSS + 設定頁「測試連線」三條路徑共用此開關), # 否則全部 x509 失敗,與本腳本的 demo 目的自相矛盾。