瀏覽代碼

fix(app): skip url password setting for same-origin server and web app (#19923)

OpeOginni 1 周之前
父節點
當前提交
51535d8ef3
共有 1 個文件被更改,包括 6 次插入2 次删除
  1. 6 2
      packages/app/src/components/terminal.tsx

+ 6 - 2
packages/app/src/components/terminal.tsx

@@ -174,6 +174,7 @@ export const Terminal = (props: TerminalProps) => {
   const auth = server.current?.http
   const auth = server.current?.http
   const username = auth?.username ?? "opencode"
   const username = auth?.username ?? "opencode"
   const password = auth?.password ?? ""
   const password = auth?.password ?? ""
+  const sameOrigin = new URL(url, location.href).origin === location.origin
   let container!: HTMLDivElement
   let container!: HTMLDivElement
   const [local, others] = splitProps(props, ["pty", "class", "classList", "autoFocus", "onConnect", "onConnectError"])
   const [local, others] = splitProps(props, ["pty", "class", "classList", "autoFocus", "onConnect", "onConnectError"])
   const id = local.pty.id
   const id = local.pty.id
@@ -519,8 +520,11 @@ export const Terminal = (props: TerminalProps) => {
         next.searchParams.set("directory", directory)
         next.searchParams.set("directory", directory)
         next.searchParams.set("cursor", String(seek))
         next.searchParams.set("cursor", String(seek))
         next.protocol = next.protocol === "https:" ? "wss:" : "ws:"
         next.protocol = next.protocol === "https:" ? "wss:" : "ws:"
-        next.username = username
-        next.password = password
+        if (!sameOrigin && password) {
+          // For same-origin requests, let the browser reuse the page's existing auth.
+          next.username = username
+          next.password = password
+        }
 
 
         const socket = new WebSocket(next)
         const socket = new WebSocket(next)
         socket.binaryType = "arraybuffer"
         socket.binaryType = "arraybuffer"