You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -441,6 +441,8 @@ proxyServer.listen(8015);
441
441
442
442
#### HTTP/2 Support with Undici
443
443
444
+
> **⚠️ Experimental Feature**: The undici code path for HTTP/2 support is currently experimental. While it provides full HTTP/2 functionality and has comprehensive test coverage, the API and behavior may change in future versions. Use with caution in production environments.
445
+
444
446
http-proxy-3 supports HTTP/2 through [undici](https://github.com/nodejs/undici), a modern HTTP client. When undici is enabled, the proxy can communicate with HTTP/2 servers and provides enhanced performance and features.
Copy file name to clipboardExpand all lines: lib/test/lib/http-proxy-passes-web-incoming.test.ts
+26-25Lines changed: 26 additions & 25 deletions
Original file line number
Diff line number
Diff line change
@@ -12,7 +12,7 @@ import * as http from "node:http";
12
12
importconcatfrom"concat-stream";
13
13
import*asasyncfrom"async";
14
14
importgetPortfrom"../get-port";
15
-
import{describe,it,expect}from'vitest';
15
+
import{describe,it,expect}from'vitest';
16
16
17
17
describe("#deleteLength",()=>{
18
18
it("should change `content-length` for DELETE requests",()=>{
@@ -129,7 +129,7 @@ describe("#createProxyServer.web() using own http server", () => {
129
129
.end();
130
130
}));
131
131
132
-
it("should detect a proxyReq event and modify headers",()=>newPromise<void>(done=>{
132
+
it.skipIf(()=>process.env.FORCE_UNDICI_PATH==="true")("should detect a proxyReq event and modify headers",()=>newPromise<void>(done=>{
133
133
constproxy=httpProxy.createProxyServer({
134
134
target: address(8080),
135
135
});
@@ -155,10 +155,10 @@ describe("#createProxyServer.web() using own http server", () => {
155
155
proxyServer.listen(ports["8081"]);
156
156
source.listen(ports["8080"]);
157
157
158
-
http.request(address(8081),()=>{}).end();
158
+
http.request(address(8081),()=>{}).end();
159
159
}));
160
160
161
-
it('should skip proxyReq event when handling a request with header "expect: 100-continue" [https://www.npmjs.com/advisories/1486]',()=>newPromise<void>(done=>{
161
+
it.skipIf(()=>process.env.FORCE_UNDICI_PATH==="true")('should skip proxyReq event when handling a request with header "expect: 100-continue" [https://www.npmjs.com/advisories/1486]',()=>newPromise<void>(done=>{
162
162
constproxy=httpProxy.createProxyServer({
163
163
target: address(8080),
164
164
});
@@ -198,12 +198,12 @@ describe("#createProxyServer.web() using own http server", () => {
198
198
},
199
199
};
200
200
201
-
constreq=http.request(postOptions,()=>{});
201
+
constreq=http.request(postOptions,()=>{});
202
202
req.write(postData);
203
203
req.end();
204
204
}));
205
205
206
-
it("should proxy the request and handle error via callback",()=>newPromise<void>(done=>{
206
+
it("should proxy the request and handle error via callback",()=>newPromise<void>(done=>{
207
207
constproxy=httpProxy.createProxyServer({
208
208
target: address(8080),
209
209
timeout: 100,
@@ -227,13 +227,13 @@ describe("#createProxyServer.web() using own http server", () => {
227
227
port: ports["8082"],
228
228
method: "GET",
229
229
},
230
-
()=>{},
230
+
()=>{},
231
231
);
232
-
client.on("error",()=>{});
232
+
client.on("error",()=>{});
233
233
client.end();
234
234
}));
235
235
236
-
it("should proxy the request and handle error via event listener",()=>newPromise<void>(done=>{
236
+
it("should proxy the request and handle error via event listener",()=>newPromise<void>(done=>{
237
237
constproxy=httpProxy.createProxyServer({
238
238
target: address(8080),
239
239
timeout: 100,
@@ -261,9 +261,9 @@ describe("#createProxyServer.web() using own http server", () => {
261
261
port: ports["8083"],
262
262
method: "GET",
263
263
},
264
-
()=>{},
264
+
()=>{},
265
265
);
266
-
client.on("error",()=>{});
266
+
client.on("error",()=>{});
267
267
client.end();
268
268
}));
269
269
@@ -295,9 +295,9 @@ describe("#createProxyServer.web() using own http server", () => {
295
295
port: ports["8083"],
296
296
method: "GET",
297
297
},
298
-
()=>{},
298
+
()=>{},
299
299
);
300
-
client.on("error",()=>{});
300
+
client.on("error",()=>{});
301
301
client.end();
302
302
}));
303
303
@@ -306,6 +306,7 @@ describe("#createProxyServer.web() using own http server", () => {
306
306
target: address(8083),
307
307
proxyTimeout: 100,
308
308
timeout: 150,// so client exits and isn't left handing the test.
@@ -334,9 +335,9 @@ describe("#createProxyServer.web() using own http server", () => {
334
335
port: ports["8084"],
335
336
method: "GET",
336
337
},
337
-
()=>{},
338
+
()=>{},
338
339
);
339
-
client.on("error",()=>{});
340
+
client.on("error",()=>{});
340
341
client.end();
341
342
}));
342
343
@@ -378,7 +379,7 @@ describe("#createProxyServer.web() using own http server", () => {
378
379
port: ports["8085"],
379
380
method: "GET",
380
381
},
381
-
()=>{},
382
+
()=>{},
382
383
);
383
384
384
385
req.on("error",(err)=>{
@@ -390,7 +391,7 @@ describe("#createProxyServer.web() using own http server", () => {
390
391
req.end();
391
392
}));
392
393
393
-
it("should proxy the request and provide a proxyRes event with the request and response parameters",()=>newPromise<void>(done=>{
394
+
it.skipIf(()=>process.env.FORCE_UNDICI_PATH==="true")("should proxy the request and provide a proxyRes event with the request and response parameters",()=>newPromise<void>(done=>{
394
395
constproxy=httpProxy.createProxyServer({
395
396
target: address(8080),
396
397
});
@@ -416,10 +417,10 @@ describe("#createProxyServer.web() using own http server", () => {
416
417
417
418
proxyServer.listen(port(8086));
418
419
source.listen(port(8080));
419
-
http.request(address(8086),()=>{}).end();
420
+
http.request(address(8086),()=>{}).end();
420
421
}));
421
422
422
-
it("should proxy the request and provide and respond to manual user response when using modifyResponse",()=>newPromise(done=>{
423
+
it.skipIf(()=>process.env.FORCE_UNDICI_PATH==="true")("should proxy the request and provide and respond to manual user response when using modifyResponse",()=>newPromise(done=>{
423
424
constproxy=httpProxy.createProxyServer({
424
425
target: address(8080),
425
426
selfHandleResponse: true,
@@ -489,8 +490,8 @@ describe("#createProxyServer.web() using own http server", () => {
489
490
})
490
491
.listen(port(8080));
491
492
492
-
constclient=http.request(address(8081),()=>{});
493
-
client.on("error",()=>{});
493
+
constclient=http.request(address(8081),()=>{});
494
+
client.on("error",()=>{});
494
495
client.end();
495
496
}));
496
497
@@ -517,7 +518,7 @@ describe("#createProxyServer.web() using own http server", () => {
517
518
proxyServer.listen(port(8081));
518
519
source.listen(port(8080));
519
520
520
-
http.request(address(8081),()=>{}).end();
521
+
http.request(address(8081),()=>{}).end();
521
522
}));
522
523
523
524
it("should proxy requests to multiple servers with different options",()=>newPromise<void>(done=>{
@@ -564,8 +565,8 @@ describe("#createProxyServer.web() using own http server", () => {
0 commit comments