Pyv*_*ves 4 firefox firefox-addon
上下文
我目前正在开发一个浏览器扩展程序,它正在按照Chrome和Opera的预期运行,但我遇到了Firefox的问题.这是manifest.json重现问题所需的最小版本:
{
"name": "Example",
"version": "0.0.1",
"author": "Pyves",
"content_scripts": [
{
"all_frames": true,
"matches": [
"<all_urls>"
],
"js": [
"content.js"
]
}
],
"manifest_version": 2
}
Run Code Online (Sandbox Code Playgroud)
这是相关的content.js:
console.log("Content script loaded");
Run Code Online (Sandbox Code Playgroud)
问题
Content script loaded在使用Chrome和Opera时,无论访问过的页面如何,系统地都会记录.然而,在使用Firefox时,内容脚本似乎不会在某些页面中加载,例如以下的原始GitHub页面:https:
//raw.githubusercontent.com/badges/shields/master/README.md
Firefox控制台中没有错误消息说明为什么内容脚本未在该特定页面上执行.
问题
为什么Firefox扩展无法将内容脚本加载到某些页面?
需要进行哪些更改才能使扩展程序在所有浏览器上始终如一?
在此先感谢,任何帮助将不胜感激!
我终于弄清楚为什么在使用Firefox时扩展程序的内容脚本没有在某些页面中加载.
在使用网络开发人员工具分析请求后,发现在获取GitHub原始页面时会返回以下标头:
Content-Security-Policy: default-src 'none'; style-src 'unsafe-inline'; sandbox
Run Code Online (Sandbox Code Playgroud)
根据MDN Web Docs,sandboxCSP指令具有以下效果:
为所请求的资源启用沙箱[...].它对页面的操作应用限制,包括阻止弹出窗口,阻止插件和脚本的执行以及强制执行同源策略.
因此,Firefox阻止扩展程序在使用沙盒CSP的页面中执行内容脚本,而其他浏览器(如Chrome和Opera)确实允许此行为.Mozilla的Bugzilla(1267027和1411641)中的相关错误报告强调:
由于独特的起源,CSP"沙盒"指令阻止内容脚本匹配
这个问题已得到承认,并有望在未来的Firefox版本中修复.
| 归档时间: |
|
| 查看次数: |
1382 次 |
| 最近记录: |