You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firefox扩展跨域XMLHttpRequest异常求助(Chrome正常)

解决Firefox扩展跨域XHR请求返回状态0的问题

我帮你梳理下这个问题的解决方案哈,Firefox里出现状态0的跨域请求失败,核心原因是扩展跨域权限的配置逻辑和Chrome不一样——你在content_scripts里加的matches只是控制脚本能注入到哪些页面,并不负责授予跨域请求的权限。下面是具体的解决步骤:

1. 补充扩展清单的跨域权限配置

根据你使用的Manifest版本(V2或V3),需要在manifest.json里添加对应的权限声明:

如果你用的是Manifest V2

在清单中添加permissions字段,包含目标域名:

{
  "manifest_version": 2,
  "content_scripts": [
    {
      "matches": ["*://*.domain1.com/*", "*://*.domain2.com/*"],
      "js": ["你的内容脚本文件名.js"]
    }
  ],
  "permissions": [
    "*://*.domain1.com/*",
    "*://*.domain2.com/*"
  ]
}

如果你用的是Manifest V3

Manifest V3用host_permissions替代了部分跨域权限的声明,所以要添加这个字段:

{
  "manifest_version": 3,
  "content_scripts": [
    {
      "matches": ["*://*.domain1.com/*", "*://*.domain2.com/*"],
      "js": ["你的内容脚本文件名.js"]
    }
  ],
  "host_permissions": [
    "*://*.domain1.com/*",
    "*://*.domain2.com/*"
  ]
}

2. 验证请求URL的完整性

确保theUrl是带完整协议(http/https)的绝对URL,比如https://domain1.com/api/get-data,不要使用相对路径或不带协议的地址——Firefox对URL格式的校验比Chrome更严格,不规范的URL也可能导致请求失败。

3. 检查Firefox隐私设置(可选)

如果你的Firefox开启了增强跟踪保护的严格模式,可能会拦截跨域请求。可以临时切换到标准模式测试:

  • 打开Firefox设置 → 隐私与安全 → 增强跟踪保护 → 选择“标准”模式
  • 重新加载扩展和目标页面,查看请求是否恢复正常

Chrome在部分场景下对扩展跨域权限的校验更宽松,但Firefox严格遵循扩展权限规则,必须显式声明跨域权限才能发起跨域请求。按照上面的步骤配置后,应该就能解决状态0的问题啦。

内容的提问来源于stack exchange,提问作者brouille

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:32:12