我有一个Javascript Web应用程序。我尝试读取或写入 Cloud Firestore 数据库,但它在浏览器控制台中返回此错误。
错误:
无法加载 https://firestore.googleapis.com/google.firestore.v1beta1.Firestore/Write/channel?VER=8&RID=21505&CVER=21&X-HTTP-Session-Id=gsessionid&%24httpHeaders=X-Goog-Api-Client%3Agl-js%2F%20fire%2F4.8.2%0D%0Agoogle-cloud-resource-prefix%3Aprojects%2FProjectName%2Fdatabases%2F(default(%0D%0A&zx=v9xcdtq156tr&t=1:
"访问控制允许源"标头的值"null"不等于提供的源。因此,不允许访问源"空"。
安全规则设置为公共读/写
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write;
}
}
}
这是我的测试代码
<script src="https://www.gstatic.com/firebasejs/4.11.0/firebase.js"></script>
<script src="https://www.gstatic.com/firebasejs/4.11.0/firebase-firestore.js"></script>
<script>
var config = {
apiKey: "XXXXXXXXXXX",
authDomain: "XXXXXXXXXXXX",
databaseURL: "XXXXXXXXXXXX",
projectId: "XXXXXXXXXXXX",
storageBucket: "XXXXXXXXXXXX",
messagingSenderId: "XXXXXXXXXXXX"
};
firebase.initializeApp(config);
// Firebase Variables
var db = firebase.firestore();
db.collection("cities").doc("LA").set({
name: "Los Angeles",
state: "CA",
country: "USA"
}).then(function () {
console.log("Document successfully written!");
}).catch(function (error) {
console.error("Error writing document: ", error);
});
</script>
谷歌浏览器版本65.0.3325.162是问题所在。使用Microsoft Edge进行测试并且它工作<</p>
根据CORS错误,您似乎在不使用任何类型的开发服务器(例如[Nodemon][1],[webpack-dev-server][2]或[SimpleHTTPServer][3](的情况下运行测试代码。过去,当我直接使用没有任何HTTP服务器的浏览器打开index.html文件时,我也会遇到类似的错误。
如果您的计算机上安装了 python,请尝试在包含索引 HTML 文件的目录中运行 HTTP 服务器。
python -m SimpleHTTPServer 8000