Firefox扩展Content Script无法请求Arxiv API,Chrome运行正常如何解决?
问题成因
- 主机权限配置不匹配:manifest.json的
permissions字段中仅配置了https://arxiv.org/*规则,该规则仅覆盖arxiv.org主域名下的资源,不包含export.arxiv.org这类子域名。Firefox对扩展跨源请求的权限校验逻辑比Chrome严格,Chrome存在宽松兼容逻辑,所以仅在Firefox的Content Script场景触发拦截。 - 跨源资源共享(CORS)限制:在未拿到对应域名的扩展权限时,Content Script发起的请求会和普通页面脚本一样受同源策略限制,而export.arxiv.org的CORS策略未开放arxiv.org域名的访问权限,因此请求被拦截。
调试排查步骤
- 查看网络请求详情:打开Firefox开发者工具的「网络」面板,重现请求失败场景,查看请求的状态、报错标识,确认是否存在CORS相关的错误提示。
- 核对扩展权限授予情况:进入Firefox扩展管理页,找到对应扩展的权限配置,确认
export.arxiv.org是否在已授予的域名权限列表中。 - 最小场景验证:将请求地址替换为当前页面域名(arxiv.org)下的合法可访问路径,测试请求是否正常,排除jQuery依赖、代码语法错误等问题。
修复方案
修改manifest.json的permissions配置,新增export.arxiv.org的权限规则即可,两种写法二选一:
- 覆盖所有arxiv子域名:
"permissions": [ "https://*.arxiv.org/*", // 其余原有权限保持不变 ]
- 单独添加export子域名权限:
"permissions": [ "https://arxiv.org/*", "https://export.arxiv.org/*", // 其余原有权限保持不变 ]
修改后重新加载扩展即可生效,部分Firefox版本需要重启浏览器完成权限更新。
内容的提问来源于stack exchange,提问作者ted
相关产品推荐
相关产品推荐

