@@ -20,13 +20,15 @@ export async function getWSEndpoint(
20
20
cancellationToken : CancellationToken ,
21
21
logger : ILogger ,
22
22
isNode : boolean ,
23
+ remoteHostHeader ?: string ,
23
24
) : Promise < string > {
24
25
const provider = new BasicResourceProvider ( fs ) ;
25
26
const [ jsonVersion , jsonList ] = await Promise . all ( [
26
27
fetchJsonWithLocalhostFallback < { webSocketDebuggerUrl ?: string } > (
27
28
provider ,
28
29
new URL ( '/json/version' , browserURL ) ,
29
30
cancellationToken ,
31
+ remoteHostHeader ,
30
32
) ,
31
33
// Chrome publishes its top-level debugg on /json/version, while Node does not.
32
34
// Request both and return whichever one got us a string. ONLY try this on
@@ -36,6 +38,7 @@ export async function getWSEndpoint(
36
38
provider ,
37
39
new URL ( '/json/list' , browserURL ) ,
38
40
cancellationToken ,
41
+ remoteHostHeader ,
39
42
)
40
43
: Promise . resolve ( undefined ) ,
41
44
] ) ;
@@ -77,9 +80,12 @@ async function fetchJsonWithLocalhostFallback<T>(
77
80
provider : BasicResourceProvider ,
78
81
url : URL ,
79
82
cancellationToken : CancellationToken ,
83
+ remoteHostHeader ?: string ,
80
84
) : Promise < Response < T > > {
81
85
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
+ } ) ;
83
89
}
84
90
85
91
url . hostname = '127.0.0.1' ;
@@ -109,10 +115,11 @@ async (
109
115
browserURL : string ,
110
116
cancellationToken : CancellationToken ,
111
117
logger : ILogger ,
118
+ remoteHostHeader ?: string ,
112
119
) : Promise < string > => {
113
120
while ( true ) {
114
121
try {
115
- return await getWSEndpoint ( browserURL , cancellationToken , logger , isNode ) ;
122
+ return await getWSEndpoint ( browserURL , cancellationToken , logger , isNode , remoteHostHeader ) ;
116
123
} catch ( e ) {
117
124
if ( cancellationToken . isCancellationRequested ) {
118
125
throw new Error ( `Could not connect to debug target at ${ browserURL } : ${ e . message } ` ) ;
0 commit comments