描述
是否可以在Electron.js中修改或覆盖感知的当前位置和原点?
我在Electron中加载一个本地. html文件,需要手动覆盖location.href
、document.domain
和所有其他对当前位置的引用,使其指向https://example.com/my/page
,以便某些外部库(例如reCAPTCHA)能够使用本地页面。
有没有可能将当前位置设置为example.com
,* 而 * 实际上不向远程URL发出请求,以便页面上的任何javascript * 认为 * 当前URL是example.com
,而不是app://....
?
我所尝试的
在我的测试中,我通过运行一个拦截HTTPS请求的MITM代理来实现它,而不是向源发出请求,而是用一个本地生成的html页面来响应,因此我可以将实际内容注入其中。
然而,我不想采用这种方法,我想知道电子是否可以在加载本地文件时伪装成一个自定义URL,并使用适当的location
/origin
报告页面上的任何内容。
2条答案
按热度按时间wtzytmuj1#
你有没有试过上面的处理程序,你可以修改头的来源参数.让我知道如果它.不同的第三方服务将无法工作,如果你的应用程序是使用文件协议加载,你也可以尝试加载/服务的html文件使用http服务器运行在电子应用程序引导.为此,你可以尝试服务它使用一个快速服务器.
参考文献:https://github.com/electron/electron/issues/6859
yc0p9oo02#
您可以使用BrowserWindowAPI将location.href属性覆盖为自定义URL。
我们创建一个新的BrowserWindow示例,并将location.href属性覆盖为URL**http://www.example.com。为此,我们使用Object.defineProperty()在BrowserWindow示例的webContents对象上定义一个新属性。get函数返回自定义URL,而set函数不执行任何操作(以防止任何设置属性的尝试)。
我们使用loadURL()**方法加载一个带有空白页面的主窗口。2当窗口加载时,location.href属性将被设置为get函数中指定的自定义URL。