gpt4 book ai didi

node.js - 如何在 Node js中转发http请求

转载 作者:搜寻专家 更新时间:2023-10-31 22:29:45 24 4
gpt4 key购买 nike

我想接受一个请求,将它转发到另一个 url 并返回转发请求的结果。

这是我的代码:

const http = require('http'),
server = http.createServer().listen(3000);

const baseUrl = 'foo.bar';

server.on('request', (req, res) => {
req.headers.host = baseUrl;

var connector = http.request(req, (resp) => {
resp.pipe(res);
});

req.pipe(connector);
});

遗憾的是,我收到一个错误,套接字已挂起。

Error: socket hang up
at createHangUpError (_http_client.js:203:15)
at Socket.socketOnEnd (_http_client.js:288:23)
at emitNone (events.js:72:20)
at Socket.emit (events.js:166:7)
at endReadableNT (_stream_readable.js:903:12)
at doNTCallback2 (node.js:439:9)
at process._tickCallback (node.js:353:17)

有谁知道,我做错了什么?

最佳答案

尝试手动配置新的请求对象,不要更改req对象。

这个有效:

const http = require('http'),
server = http.createServer().listen(3000);

const baseUrl = 'www.i.ua';

server.on('request', (req, res) => {
var connector = http.request({
host: baseUrl,
path:'/',
method: 'GET',
headers: req.headers
}, (resp) => {
resp.pipe(res);
});

req.pipe(connector);
});

所以,你应该有这样的东西:

const http = require('http'),
server = http.createServer().listen(3000);

const baseUrl = 'radio.i.ua';

server.on('request', (req, res) => {
var connector = http.request({
host: baseUrl,
path: req.url,
method: req.method,
headers: req.headers
}, (resp) => {
resp.pipe(res);
});

req.pipe(connector);
});

关于node.js - 如何在 Node js中转发http请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34176555/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com