我创建了一个小型服务器,目前只输出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.url
为http://ionicabizau.net
。
为什么我们可以这样覆盖请求网址?电子在背景中是什么?
首先,我认为只需要像这样添加它:
http://localhost:8080/http://ionicabizau.net
但实际上,它会像/http://ionicabizau.net
一样到达服务器上(注意第一个斜杠)。
Electron改变request
对象网址的神奇之处是什么?
答案 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指定为它发送给服务器的消息的一部分,这与发送消息的服务器无关。