我将带有文件(enctype =“multipart / form-data”)的表单发布到node.js(express.js框架),并且只想发送这个相同的发布请求,就像它只是发送到不同的服务器一样。 node.js中最好的方法是什么?
答案 0 :(得分:9)
删除express.bodyParser并尝试这样的管道:
req.pipe(request('http://host/url/')).pipe(res)
答案 1 :(得分:6)
您可以使用Mikeal的Node.js请求(https://github.com/mikeal/request)进行尝试。它会是这样的:
app.post('/postproxy', function(req, res, body){
req.pipe(request.post('http://www.otherserver.com/posthandler',body)).pipe(res);
});
答案 2 :(得分:0)
由于 https://github.com/mikeal/request 已弃用,以下是使用节点中的 http
模块的解决方案:
app.post('/proxy', (request, response, next) => {
const options = {
host: 'destination_host',
port: 'destination_port',
method: 'post',
path: '/destination_path',
headers: request.headers
};
request.pipe(http.request(options, (destinationResponse) => {
destinationResponse.pipe(response);
}))
.on('error', (err) => {
// error handling here
})
}
为了代理来自 multipart/form-data
的文件,我不得不使用原始请求标头。