![](/img/trans.png)
[英]Cannot fetch from API inside docker container from react app due to 'Access-Control-Allow-Origin'
[英]Firestore: Fetch API cannot load... due to access control checks
在移動設備 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=**} {
// This does not fix the issue
allow read, write: if true;
}
}
}
此錯誤的搜索結果通常指cors
問題,但對本案例沒有意義。 任何想法贊賞...
"firebase": "^9.10.0"
如果我沒記錯的話,如果用戶沒有登錄就不能使用 firestore,也許你應該在 firestore 中做任何事情之前添加一個登錄用戶。 並在 firestore 規則中添加這個。 [CMIIW]
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth != null;
}
}
提到的錯誤似乎是由於 CORS 問題。您還應該檢查是否在服務器端和客戶端都設置了 header Access-Control-Allow-Origin。
同樣如此處所述,請嘗試將 Safari 發出的實際請求與完成的成功請求進行比較,以發現可能丟失的標頭(也可能將它們與您的服務器配置進行比較)。
這種實現以前是使用 XMLHttpRequest 實現的。因為“Fetch”提供了一個更好的替代方案,可以很容易地被其他技術(如 Service Workers)使用。 Fetch 還提供了一個單一的邏輯位置來定義其他與 HTTP 相關的概念,例如 CORS 和 HTTP 的擴展。
web的一個核心安全原則是:默認不允許從其他域加載資源,除非服務器明確允許。 錯誤消息也可能出現,因為您正試圖從不同的域中獲取某些內容,而服務器未設置為專門允許它。 閱讀跨源資源共享 (CORS) 以了解更多信息。 通常歸結為在響應中添加 HTTP header Access-Control-Allow-Origin: *。
在此處查看類似示例:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.