fix(ui): accept same-origin http and relative gateway URLs for client version

This commit is contained in:
Tak Hoffman
2026-03-04 23:49:38 -06:00
parent 9b0ba7bfbb
commit b75a625fbf
2 changed files with 22 additions and 2 deletions

View File

@@ -243,6 +243,26 @@ describe("resolveControlUiClientVersion", () => {
).toBe("2026.3.3");
});
it("returns serverVersion for same-origin relative targets", () => {
expect(
resolveControlUiClientVersion({
gatewayUrl: "/ws",
serverVersion: "2026.3.3",
pageUrl: "https://control.example.com/openclaw/",
}),
).toBe("2026.3.3");
});
it("returns serverVersion for same-origin http targets", () => {
expect(
resolveControlUiClientVersion({
gatewayUrl: "https://control.example.com/ws",
serverVersion: "2026.3.3",
pageUrl: "https://control.example.com/openclaw/",
}),
).toBe("2026.3.3");
});
it("omits serverVersion for cross-origin targets", () => {
expect(
resolveControlUiClientVersion({

View File

@@ -102,8 +102,8 @@ export function resolveControlUiClientVersion(params: {
try {
const page = new URL(pageUrl);
const gateway = new URL(params.gatewayUrl, page);
const expectedWsProtocol = page.protocol === "https:" ? "wss:" : "ws:";
if (gateway.protocol !== expectedWsProtocol || gateway.host !== page.host) {
const allowedProtocols = new Set(["ws:", "wss:", "http:", "https:"]);
if (!allowedProtocols.has(gateway.protocol) || gateway.host !== page.host) {
return undefined;
}
return serverVersion;