gpt4 book ai didi

Node.js 代理从外部网站返回准确的响应

转载 作者:太空宇宙 更新时间:2023-11-03 22:18:02 25 4
gpt4 key购买 nike

我正在尝试创建外部网站的express.js 代理,以从那里获取音频数据。我知道像 http-proxy 这样的模块,但认为对于只有一个 url 绑定(bind)请求通过代理的情况来说,它们是过多的。我正在使用下面的代码:

express.get('/proxy', function (req, res) {

var options ={
host: "website.com",
port: 80,
path: "/audio/test.mp3",
method: 'GET'
};

http.get(options, function (audioRes) {
var data = [], dataLen = 0;

audioRes.on('data', function(chunk) {
data.push(chunk);
dataLen += chunk.length;
})
.on('end', function() {
var buf = new Buffer(dataLen);
res.set(audioRes.headers);
res.send(buf);
});
})
.on('error', function (error) {
console.log(error.message);
});

});

我收到响应,但无法将其解码为有效音频。在使用 Fiddler 进行调试时,我发现服务器发送的字节数与 Content-Length header 中指定的数字(这表明检索到的字节数较少)不匹配。

我不知道如何正确返回从远程服务器检索到的确切响应。如果有任何帮助,我们将不胜感激。

最佳答案

要通过代理发送请求,您可以在 Host header 中设置代理 url。此外,您还必须指定您尝试通过代理访问的外部资源的完整 URL。

var http = require("http");

var options = {
host: "proxy",
port: 8080,
path: "http://www.google.com", //full URL
headers: {
Host: "10.1.2.3" //your proxy location
}
};
http.get(options, function(res) {
console.log(res);
});

我不确定为什么它没有返回完整的响应。你能发布你的选择吗?

更新

放置选项后在 /proxy 中尝试此操作

http.get(options, function (audioRes) {
audioRes.pipe(res);
})
.on('error', function (error) {
console.log(error.message);
});

关于Node.js 代理从外部网站返回准确的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16756820/

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