Javascript 如何通过代理发送fetch()请求?

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.

我有一个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.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。答案是:这是不可能的。当然,你可以换掉一项技术,让它发挥作用,但这并不是对问题的答案。