diff --git a/lib/vscode/src/vs/workbench/api/common/shared/webview.ts b/lib/vscode/src/vs/workbench/api/common/shared/webview.ts index 9c78a6bf9..c0449b6f1 100644 --- a/lib/vscode/src/vs/workbench/api/common/shared/webview.ts +++ b/lib/vscode/src/vs/workbench/api/common/shared/webview.ts @@ -55,9 +55,12 @@ export function asWebviewUri( }); } + // NOTE@coder: Add the port separately because if the port is in the domain the + // URL will be invalid and the browser will not request it. + const authorityUrl = new URL(`${resource.scheme}://${resource.authority}`); return URI.from({ scheme: Schemas.https, - authority: `${resource.scheme}+${resource.authority}.${webviewRootResourceAuthority}`, + authority: `${resource.scheme}+${authorityUrl.hostname}.${webviewRootResourceAuthority}${authorityUrl.port ? (':' + authorityUrl.port) : ''}`, path: resource.path, fragment: resource.fragment, query: resource.query, diff --git a/lib/vscode/src/vs/workbench/contrib/webview/browser/pre/service-worker.js b/lib/vscode/src/vs/workbench/contrib/webview/browser/pre/service-worker.js index 8ff9e914e..3a66e7e62 100644 --- a/lib/vscode/src/vs/workbench/contrib/webview/browser/pre/service-worker.js +++ b/lib/vscode/src/vs/workbench/contrib/webview/browser/pre/service-worker.js @@ -256,7 +256,7 @@ async function processResourceRequest(event, requestUrl) { const firstHostSegment = requestUrl.hostname.slice(0, requestUrl.hostname.length - (resourceBaseAuthority.length + 1)); const scheme = firstHostSegment.split('+', 1)[0]; - const authority = firstHostSegment.slice(scheme.length + 1); // may be empty + const authority = firstHostSegment.slice(scheme.length + 1) + requestUrl.port ? (':' + requestUrl.port) : ''; // may be empty for (const parentClient of parentClients) { parentClient.postMessage({