很痛苦,火狐对扩展程序的限制让我开始自我怀疑了

2024-02-25 04:33:57 +08:00
 rizon

开发的扩展程序准备适配火狐时发现火狐在 mv3 版本里,禁用了 script-src 的外部资源只允许使用 self ,而且还禁止了 blob 。
我的扩展程序的用户认证用的是 clerk 这个服务,这个服务里的代码有很多都是远程 js 和 blob 。 我费劲改了 clerk 的代码把远程 js 改成本地,结果发现还有 blob 的问题,就不知道怎么办了。

没有看到任何社区询问这个问题,现在我开始怀疑是不是我写扩展的思路不对。。。扩展程序的登录是不是不是这么搞,也没有相关的教程和案例可以看。。。

找不到相关知识就很难受。 痛,非常之痛。。。

6227 次点击
所在节点    浏览器
35 条回复
rizon
2024-02-25 05:09:32 +08:00
关了电脑,躺在床上,我突然想到一个问题,他是不是只限制的前端代码,background 里是不是没限制?如果是的话我就把请求都转移到后台的脚本里,然后麻烦一点 message 通信一下。
明天看看吧
loginv2
2024-02-25 08:23:51 +08:00
chrome 的 Manifest v3 好像也这样吧? 不太清楚 问问
theprimone
2024-02-25 08:46:30 +08:00
MV3 好像就是所有代码都必须在插件包
yfugibr
2024-02-25 09:18:07 +08:00
还-+++
yfugibr
2024-02-25 09:21:28 +08:00
@yfugibr #4 误触了抱歉
oott123
2024-02-25 10:16:36 +08:00
建议你专门打开一个标签页让用户登录吧,登完把凭据传到你插件里
laminux29
2024-02-25 10:43:39 +08:00
安全就是这样的,为了安全,需要牺牲很多便利。

自古的经验来看,便利可以让你一时爽,但安全问题可能让你送命。

最近南京小区失火新闻可以搜一下,居民们为了方便,违规停电动车,最后死了那么多人。
DiamondYuan
2024-02-25 11:04:58 +08:00
你直接获取你网站的 cookie 就好了,这样插件里不需要登录。
liuweiqing
2024-02-25 11:15:30 +08:00
确实,但肯定有解决方法而且会比你想象的简单
kidlj
2024-02-25 11:16:30 +08:00
background scripts 没有限制外部请求,可以从 content scripts 发消息到 background 这样来发起请求。

可以参考我写的扩展: https://github.com/kidlj/metword.extension
rizon
2024-02-25 11:37:31 +08:00
@DiamondYuan #8 这事我也在想,但是我不知道插件怎么获取网站的 cookie
rizon
2024-02-25 11:38:07 +08:00
@kidlj #10 非常感谢,我看一下
theprimone
2024-02-25 11:49:48 +08:00
@rizon #11
const result = await browser.cookies.get({
url: "站点 URL",
name: "站点 cookie 名称",
})

需要 cookies 权限
google2020
2024-02-25 11:56:03 +08:00
v3 是禁止外部脚本,不是禁止外部请求。

具体来说,登录请求代码写在扩展代码包里就可以。同时,在第三方网页发起网络请求有可能触发跨域限制,所以不要用 content script 去发起,用 background script 去发起。
rizon
2024-02-25 12:00:23 +08:00
@google2020 #14 主要是我用了第三方的认证服务的,他们的 sdk 本身就会引用外部脚本。除非我不用 sdk ,只能自己写了。

@loginv2 #2 @google2020 #14 但是我的 chrome 插件就没有这些问题,也是 mv3 就没关系。就火狐不行。
google2020
2024-02-25 12:18:51 +08:00
@rizon 不可能,mv3 明确说明禁止外部脚本,要么是 chrome bug ,要么是通过插入 document 元素的方式加载且刚好对应网页没有禁止第三方脚本。
VIVIANSNOW
2024-02-25 12:23:49 +08:00
不要管火狐不就完了。用的人极少极少。收益不成正比。算是浪费你的时间
rizon
2024-02-25 12:27:59 +08:00
@google2020 #16 不是 content 脚本里,是在 options 页面的。
NewYear
2024-02-25 15:34:21 +08:00
@laminux29
一直认为针对“电动车、摩托车”的许多限制是不太合理的,禁摩、禁电动车入户等等,都是一纸条文下去就什么都不管了,出了问题就是居民不道德,居民伤天害理。
摩托车有风险,禁,没法出行是吧,电动车不安全是吧,买轿车啊,没地方放车是吧,买个房啊,主打的就是大家都是富裕家庭。对了,买车放家里就可以了,千万别开出门,外面哪有那么多车位。
反正我自己是买了车,但是出行一般是共享单车……所以明明摩托车/电动车可以解决问题,最后各种买买买,巨大支出,年年保险费,实际用的反而是自行车……

我这边前几个月突然被上门检查,说是查不准用煤气罐热水器,我满脸懵逼,这个也不让用吗,还专门查了很久,找不到同等体验的平替(要么使用不方便,要么安装贼复杂),真的很不喜欢这样子一刀切的玩法。


所以这个电动车入户充电的问题,还是建议搞一些方便居民充电的设施,我这边居民从来不入户充电,很简单啊,因为门口和公司停车处都有电动车充电桩,方便得很,价格也很便宜。
哦对了,也可以像我们这边禁摩一样,直接禁止电动车出行就行了,也能解决问题。
NewYear
2024-02-25 15:40:50 +08:00
对了,楼上的我看似有点跑题,但是我想说“居民们为了方便,违规停电动车,最后死了那么多人。”这个因果关系是不成立的,实际是“制定规则的部门”为了规范而规范,没有考虑居民实际使用需求,也没有帮助居民解决问题,居民自己也不可能去室外设立充电桩(在我们农村反而没问题,自家掏钱搞一个就是了),导致居民“普遍性违法”,然后才是“死了那么多人”。

很有意思的是,在这个事件中,规则制定人、电动车生产方等等都是无责任的,责任全是消费者的问题,主打的就是一个花钱买罪受,为了方便倾家荡产。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1018209

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX