@@ -2,6 +2,7 @@ import { logger } from "@coder/logger"
2
2
import * as http from "http"
3
3
import proxy from "http-proxy"
4
4
import * as net from "net"
5
+ import * as querystring from "querystring"
5
6
import { HttpCode , HttpError } from "../../common/http"
6
7
import { HttpProvider , HttpProviderOptions , HttpProxyProvider , HttpResponse , Route } from "../http"
7
8
@@ -47,7 +48,7 @@ export class ProxyHttpProvider extends HttpProvider implements HttpProxyProvider
47
48
}
48
49
}
49
50
50
- const payload = this . doProxy ( route . requestPath , request , response , base )
51
+ const payload = this . doProxy ( route . requestPath , route . query , request , response , base )
51
52
if ( payload ) {
52
53
return payload
53
54
}
@@ -62,7 +63,7 @@ export class ProxyHttpProvider extends HttpProvider implements HttpProxyProvider
62
63
head : Buffer ,
63
64
) : Promise < void > {
64
65
this . ensureAuthenticated ( request )
65
- this . doProxy ( route . requestPath , request , socket , head , route . base . replace ( / ^ \/ / , "" ) )
66
+ this . doProxy ( route . requestPath , route . query , request , socket , head , route . base . replace ( / ^ \/ / , "" ) )
66
67
}
67
68
68
69
public getCookieDomain ( host : string ) : string {
@@ -83,7 +84,7 @@ export class ProxyHttpProvider extends HttpProvider implements HttpProxyProvider
83
84
response : http . ServerResponse ,
84
85
) : HttpResponse | undefined {
85
86
const port = this . getPort ( request )
86
- return port ? this . doProxy ( route . fullPath , request , response , port ) : undefined
87
+ return port ? this . doProxy ( route . fullPath , route . query , request , response , port ) : undefined
87
88
}
88
89
89
90
public maybeProxyWebSocket (
@@ -93,7 +94,7 @@ export class ProxyHttpProvider extends HttpProvider implements HttpProxyProvider
93
94
head : Buffer ,
94
95
) : HttpResponse | undefined {
95
96
const port = this . getPort ( request )
96
- return port ? this . doProxy ( route . fullPath , request , socket , head , port ) : undefined
97
+ return port ? this . doProxy ( route . fullPath , route . query , request , socket , head , port ) : undefined
97
98
}
98
99
99
100
private getPort ( request : http . IncomingMessage ) : string | undefined {
@@ -121,19 +122,22 @@ export class ProxyHttpProvider extends HttpProvider implements HttpProxyProvider
121
122
122
123
private doProxy (
123
124
path : string ,
125
+ query : querystring . ParsedUrlQuery ,
124
126
request : http . IncomingMessage ,
125
127
response : http . ServerResponse ,
126
128
portStr : string ,
127
129
) : HttpResponse
128
130
private doProxy (
129
131
path : string ,
132
+ query : querystring . ParsedUrlQuery ,
130
133
request : http . IncomingMessage ,
131
134
socket : net . Socket ,
132
135
head : Buffer ,
133
136
portStr : string ,
134
137
) : HttpResponse
135
138
private doProxy (
136
139
path : string ,
140
+ query : querystring . ParsedUrlQuery ,
137
141
request : http . IncomingMessage ,
138
142
responseOrSocket : http . ServerResponse | net . Socket ,
139
143
headOrPortStr : Buffer | string ,
@@ -159,7 +163,9 @@ export class ProxyHttpProvider extends HttpProvider implements HttpProxyProvider
159
163
autoRewrite : true ,
160
164
changeOrigin : true ,
161
165
ignorePath : true ,
162
- target : `http://127.0.0.1:${ port } ${ path } ` ,
166
+ target : `http://127.0.0.1:${ port } ${ path } ${
167
+ Object . keys ( query ) . length > 0 ? `?${ querystring . stringify ( query ) } ` : ""
168
+ } `,
163
169
}
164
170
165
171
if ( responseOrSocket instanceof net . Socket ) {
0 commit comments