Electron代理网址如何?

时间:2016-10-12 12:58:30

标签: javascript node.js http proxy electron

我创建了一个小型服务器,目前只输出request.url

const http = require('http');
http.createServer(onRequest).listen(8080);
function onRequest(clientRequest, clientResponse) {
    console.log(clientRequest.url);
}

使用Electron API,我们可以设置代理:通过此服务器代理所有网址。

因此,我在localhost:8080上运行我的服务器并使用--proxy-server http://localhost:8080通过我的代理服务器重定向流量。这允许我更改HTML中的一些片段,然后在Electron中呈现它。

当我访问http://ionicabizau.net时,服务器端的request.urlhttp://ionicabizau.net

为什么我们可以这样覆盖请求网址?电子在背景中是什么?

首先,我认为只需要像这样添加它:

  

http://localhost:8080/http://ionicabizau.net

但实际上,它会像/http://ionicabizau.net一样到达服务器上(注意第一个斜杠)。

Electron改变request对象网址的神奇之处是什么?

1 个答案:

答案 0 :(得分:0)

当Electron(或其他任何)发出HTTP请求时,它会连接到目标服务器和端口,并发送如下消息:

GET / HTTP/1.1
Host: www.example.com

大多数服务器将此解释为完整网址http://www.example.com/的HTTP请求。指定代理服务器时,会影响HTTP客户端连接到的服务器,但它不会更改请求的内容(因此请求的URL仍为http://www.example.com/)。

因此,电子需要做的事情并没有什么特别的,以及#34;覆盖"请求URL ...任何HTTP客户端都将请求URL指定为它发送给服务器的消息的一部分,这与发送消息的服务器无关。