Cha*_*ish 8 javascript webview electron
我想创建一个使用webview显示第三方内容的Electron应用程序.
我希望能够拦截来自此webview的所有请求和响应.有时我想操纵这些内容,有时我想记录它,有时我想什么都不做.
作为响应的一个示例,也许Web服务器将使用TypeScript代码进行响应,也许我想接受该响应,并将其编译为标准JavaScript.
我已经查看了这个页面,但看起来它只能取消请求并操纵标题.该WebRequest的API看起来不适合我用例的需求,因为它仅允许请求和响应的非常小的操作.
我还考虑过设置一些可以充当代理的Web服务器,但我对此表示担忧.我想保持用户隐私,我想确保托管第三方内容的Web服务器看起来像是来自浏览器之类的环境(例如Electron webview)而不是服务器.我知道我可以使用我发送的标题操作请求等等,但是整个解决方案变得更加复杂,然后我想,但可能是唯一的选择.
有没有更好的方法来实现这一点,并对Electron webview有更多的控制权?
not*_*tXX 12
我认为您应该研究 The Protocol API。它在内部充当代理。假设您希望用户打开http://www.google.com并查看类似you've been conned!.
const { protocol } = require("electron");
const content = new Buffer("you've been conned!");
protocol.interceptBufferProtocol("http", (request, result) => {
if (request.url === "http://www.google.com")
return result(content);
... // fetch other http protocol content and return to the electron
});Run Code Online (Sandbox Code Playgroud)
与WebRequest API相比,还有很多工作要做。但它比独立的本地代理简单得多。
小智 6
要获取您的电子应用程序发出的任何 http 网络调用的请求正文:
session.defaultSession.webRequest.onBeforeSendHeaders(filter, (details, callback) => {
if (details.uploadData) {
const buffer = Array.from(details.uploadData)[0].bytes;
console.log('Request body: ', buffer.toString());
}
callback(details);
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2828 次 |
| 最近记录: |