electron iframe和webview嵌入页面区别
本文转载自:https://newsn.net/
苏南大叔在本文中,对比一下electron
中的iframe
和webview
标签。当然,仅仅是对比其中可能存在的一个微小区别。因为两者iframe
和webview
,应该存在着较大差别。所以,本篇文字,仅仅是管中窥豹罢了。主要的切入点就是:对于electron
程序,渲染进程嵌入页面的时候,使用iframe
和使用webview
,产生了一个比较明显的区别。
本文测试环境:mac
。
基本前提
防嵌入设置
因为使用iframe
和使用webview
,如果要产生这个巨大差异,就需要发出一个特殊的header
头。而苏南大叔的博客代码,恰巧就发出了这个特殊的header
头。
header("Content-Security-Policy: frame-ancestors newsn.net");
详情请点击:
正常情况下来说,这个特殊的header
头,可以防止第三方页面嵌入你的网站。
webview
标签支持
因为从[email protected]
系列开始,默认是禁用掉了webviewTag
的支持,所以,还是需要在主进程中启用一下webviewTag
。示例代码如下([email protected]
及更高版本,可能需要下述代码):
mainWindow = new BrowserWindow({//...
webPreferences: {
webviewTag:true
//...
}
})
测试代码
上述防止嵌入页面的特殊header
头,是针对普通的网页来说的,嵌入方式是iframe
。而对于electron
的渲染进程来说,能嵌入页面的tag
,可不仅仅是iframe
,还有webview
这个特有标签可以选择。测试代码如下:
<iframe src="https://newsn.net"></iframe><webview src="https://newsn.net"></webview>
测试结果
测试结果是比较神奇的,在渲染进程中:
iframe
嵌入失败
通过iframe
标签嵌入的页面,显示空白,嵌入失败。错误提示:
Refused to display 'https://newsn.net/' in a frame because it set 'X-Frame-Options' to 'sameorigin'.
webview
嵌入成功
通过webview
标签的页面,正常显示,嵌入成功。换句话说,就是:webview
标签突破了某种浏览器限制,您懂的。
总结
在本文中,苏南大叔得出的结论是:webview
虽然看起来和iframe
非常类似,但是webview
有着更大的权限,这也许是electron
官方,会默认禁用webview
标签的原因之一吧。
以上是 electron iframe和webview嵌入页面区别 的全部内容, 来源链接: utcz.com/a/118662.html