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

移动端Safari出现Firestore Fetch API访问控制检查错误求助

移动端Safari中Firestore跨域访问错误的解决思路

问题详情

在移动端Safari中触发如下错误:

Fetch API cannot load https://firestore.googleapis.com/google.firestore.v1.Firestore/Write/channel?gsessionid=&database=&RID=&AID&TYPE=xmlhttp&zx=&t=1 due to access control checks.

(已移除部分参数值)

当前应用可正常运行,且域名已添加至Firestore白名单,但该错误仍存在。已排除安全规则问题(安全规则会抛出特定错误),即使设置全开放规则:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      // 此规则无法解决问题
      allow read, write: if true;
    }
  }
}

错误依旧出现。搜索结果指向CORS问题,但该场景下此结论不合理,求可行的解决思路。使用的Firebase版本为:"firebase": "^9.10.0"

排查方向

  • 检查Safari隐私设置:移动端Safari的「阻止跨网站跟踪」或「防止跨站点跟踪」选项可能会拦截这类长连接请求,可临时关闭该选项验证是否解决问题。
  • 调整Firestore持久化配置:Firebase 9+版本中,本地持久化可能与Safari的存储策略冲突,尝试初始化Firestore时禁用持久化:
    import { initializeApp } from "firebase/app";
    import { initializeFirestore } from "firebase/firestore";
    
    const app = initializeApp(firebaseConfig);
    // 禁用持久化
    const db = initializeFirestore(app, {
      persistence: false
    });
    
  • 清理未释放的实时监听:错误对应的是Firestore的Write长连接通道,通常由onSnapshot实时监听触发,检查代码中是否存在未正确调用unsubscribe的监听,导致重复发起连接请求。
  • 核对白名单配置:确保Firebase控制台中添加的域名完全匹配,包含协议(http/https)和端口号(非默认端口时),例如https://yourdomain.com而非yourdomain.com。
  • 升级Firebase版本:9.10.0为较早版本,后续版本可能修复了Safari相关兼容性问题,尝试升级至最新稳定版测试。
  • 清除Safari网站缓存:旧缓存可能引发CORS相关异常,清除Safari的网站数据后重试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 20:31:08