electron The default of contextIsolation is deprecated and will be changing from false to true

问题描述

electron从旧版升级到新版后提示"The default of contextIsolation is deprecated and will be changing from false to true"

问题解读

这句话的意思是:contextIsolation的默认值已弃用,将从false更改为true
contextIsolation是上下文隔离的意思,原本contextIsolation是有默认值的,默认值为ifalse,现在改为true了

原因是什么呢?
官方给出了一个解释这个问题的github链接
在这里插入图片描述
用我蹩脚的英语翻译一下:

如果没有contextIsolation,运行在渲染进程的任何代码都可以轻而易举地访问到electron实例,或者访问到你在preload.js并执行特权操作(或是越权操作),而且你不希望这些特权操作可以被任意的网站执行。
你可以查看Context Isolation的文档,从中了解如何开启上下文隔离和关于它对安全性的益处
我们这么改变是为了提升electron采用默认设置时的安全性,这样你的electron应用就会更加安全,除非你故意把它设置为false

再看Context Isolation的文档
在这里插入图片描述
只翻译一下第二段:

在preload.js中访问的window对象与在网页中访问的是不同的,举个例子,如果你在preload.js中为window添加了一个hello属性:window.hello = ‘wave’,并且设置了ContextIsolation为true,你在网页中访问window.hello将会是undefined

解决方法

那如果以前正好是利用window向页面注入了一些方法呢?现在为了安全性确不能这样用了怎么办?
不急,Context Isolation文档说了他们为此提供了一个新的Api:contextBridge,让你可以安全地往window注入方法
在这里插入图片描述
用法很简单

const { contextBridge } = require('electron')

contextBridge.exposeInMainWorld('myAPI', {
  doAThing: () => {}
})

contextBridge模块可以用于将api从你的预加载脚本运行的独立上下文安全地暴露到网站运行的上下文中,API也可以从窗口的网站上访问。像之前一样,在网页内可以使用window.myAPI

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值