我有 CORS 问题,我正在发送更新数据的放置请求 - 使用 React 发布到 Firebase:
const submitHandler = e => {
e.preventDefault();
const err = validate();
if(err === false) {
setFormData(formData)
const requestOptions = {
method: 'PUT',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
title: title,
url: url,
author: author,
description: description})
};
fetch(`https://blog-d8b04-default-rtdb.europe-west1.firebasedatabase.app/posts/${postName}`, requestOptions)
.then(response => {response.json(); console.log(response)})
.then(data => console.log(data));
setFormData(initialState);
}
}
我在控制台中有这个通知错误
Access to fetch at 'https://blog-d8b04-default-rtdb.europe-west1.firebasedatabase.app/posts/-MX1-Df4t59Y3DnyWUzB' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.
EditPost.js:58 PUT https://blog-d8b04-default-rtdb.europe-west1.firebasedatabase.app/posts/-MX1-Df4t59Y3DnyWUzB net::ERR_FAILED
通过发布请求 - 添加新帖子一切正常。 有人解决这个问题吗?
最佳答案
如果您通过 HTTPS 访问您的数据库,您需要通过将 .json
附加到您的数据库 URL 来访问数据的 JSON 版本,如下所示:
fetch(`https://blog-d8b04-default-rtdb.europe-west1.firebasedatabase.app/posts/${postName}.json`, requestOptions)
.then(response => {response.json(); console.log(response)})
.then(data => console.log(data));
您还应该更新您的数据库规则,因为您的数据库是全局可读可写的。
关于javascript - CORS 问题 - 从源 *** 访问 *** 已被 CORS 策略 : No 'Access-Control-Allow-Origin' - PUT request to Firebase 阻止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66866759/