Javascript 如何通过代理发送fetch()请求?
我有一个HTTP代理,我想代理来自浏览器客户端应用程序的所有HTTP请求 在命令行上,我可以通过以下方式代理请求:Javascript 如何通过代理发送fetch()请求?,javascript,web,Javascript,Web,我有一个HTTP代理,我想代理来自浏览器客户端应用程序的所有HTTP请求 在命令行上,我可以通过以下方式代理请求: curl https://code.sgo.to --proxy localhost:5555 或者这个: var http = require("http"); var options = { host: "proxy", port: 8080, path: "http://www.google.com", headers: { Host: "www.
curl https://code.sgo.to --proxy localhost:5555
或者这个:
var http = require("http");
var options = {
host: "proxy",
port: 8080,
path: "http://www.google.com",
headers: {
Host: "www.google.com"
}
};
http.get(options, function(res) {
console.log(res);
res.pipe(process.stdout);
});
但是,在客户机上,path
似乎不是实际有效的path
。例如
fetch("http://localhost:5555http://code.sgo.to")
看起来不对。但是
fetch("http://localhost:5555/http://code.sgo.to")
断开我的标准代理,因为路径中有一个额外的/
,它希望传递一个URL
有人知道在浏览器中的等价物是什么吗(例如通过
fetch()
或通过XMLHttpRequest
)?浏览器不允许您这样做。您尝试过编码的URL路径吗?如果代理设置为使用/接受http请求,并使用该请求的路径作为代理的目标,则可以通过这种方式完成。因此,他们在nodejs中的http请求可以工作。例如,cors代理服务就是这样工作的。@PatrickEvans OP特别询问了标准代理、浏览器和XMLHttpRequest/Fetch。答案是:这是不可能的。当然,你可以换掉一项技术,让它发挥作用,但这并不是对问题的答案。