作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我想接受一个请求,将它转发到另一个 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/
我是一名优秀的程序员,十分优秀!