Skip to content

Commit 5d276a3

Browse files
authored
feat: use remoteHostHeader when retrieving websocket url from node debugger (#2111)
1 parent 780ac69 commit 5d276a3

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

src/targets/browser/spawn/endpoints.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,15 @@ export async function getWSEndpoint(
2020
cancellationToken: CancellationToken,
2121
logger: ILogger,
2222
isNode: boolean,
23+
remoteHostHeader?: string,
2324
): Promise<string> {
2425
const provider = new BasicResourceProvider(fs);
2526
const [jsonVersion, jsonList] = await Promise.all([
2627
fetchJsonWithLocalhostFallback<{ webSocketDebuggerUrl?: string }>(
2728
provider,
2829
new URL('/json/version', browserURL),
2930
cancellationToken,
31+
remoteHostHeader,
3032
),
3133
// Chrome publishes its top-level debugg on /json/version, while Node does not.
3234
// Request both and return whichever one got us a string. ONLY try this on
@@ -36,6 +38,7 @@ export async function getWSEndpoint(
3638
provider,
3739
new URL('/json/list', browserURL),
3840
cancellationToken,
41+
remoteHostHeader,
3942
)
4043
: Promise.resolve(undefined),
4144
]);
@@ -77,9 +80,12 @@ async function fetchJsonWithLocalhostFallback<T>(
7780
provider: BasicResourceProvider,
7881
url: URL,
7982
cancellationToken: CancellationToken,
83+
remoteHostHeader?: string,
8084
): Promise<Response<T>> {
8185
if (url.hostname !== 'localhost') {
82-
return provider.fetchJson<T>(url.toString(), cancellationToken, { host: 'localhost' });
86+
return provider.fetchJson<T>(url.toString(), cancellationToken, {
87+
host: remoteHostHeader ?? 'localhost',
88+
});
8389
}
8490

8591
url.hostname = '127.0.0.1';
@@ -109,10 +115,11 @@ async (
109115
browserURL: string,
110116
cancellationToken: CancellationToken,
111117
logger: ILogger,
118+
remoteHostHeader?: string,
112119
): Promise<string> => {
113120
while (true) {
114121
try {
115-
return await getWSEndpoint(browserURL, cancellationToken, logger, isNode);
122+
return await getWSEndpoint(browserURL, cancellationToken, logger, isNode, remoteHostHeader);
116123
} catch (e) {
117124
if (cancellationToken.isCancellationRequested) {
118125
throw new Error(`Could not connect to debug target at ${browserURL}: ${e.message}`);

src/targets/node/nodeAttacher.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ export class NodeAttacher extends NodeAttacherBase<INodeAttachConfiguration> {
7474
? CancellationTokenSource.withTimeout(runData.params.timeout).token
7575
: runData.context.cancellationToken,
7676
this.logger,
77+
runData.params.remoteHostHeader,
7778
);
7879
}
7980
} catch (e) {

0 commit comments

Comments
 (0)