【发布时间】:2020-04-09 04:08:05
【问题描述】:
由于某种原因,我收到了错误
被 CORS 政策阻止:没有“Access-Control-Allow-Origin”标头
来自我的代码:
import * as firebase from "firebase";
function FreshMail() {
const db = firebase.firestore();
firebase.auth().onAuthStateChanged(function (user) {
if (user) {
let user = firebase.auth().currentUser.uid;
let cityRef = db.collection("Users").doc(user);
let getDoc = cityRef
.get()
.then((doc) => {
if (!doc.exists) {
console.log("No such document!");
} else {
console.log("Document data:", doc.data());
var request = require("request");
let data = doc.data();
var dataString = {
userE: data.UserEmailAddress,
userP: data.UserEmailPassword,
userH: data.UserEmailHost,
userPort: data.UserEmailPort,
};
var headers = {
"Content-Type": "application/json",
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "GET, PUT, POST, OPTIONS",
"Access-Control-Allow-Headers": "*",
};
var options = {
url:
"https://us-central1-zenmail-bfd57.cloudfunctions.net/***",
method: "POST",
body: dataString,
headers: headers,
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
}
})
.catch((err) => {
console.log("Error getting document", err);
});
}
});
}
export default FreshMail;
我尝试将访问控制允许来源添加到标题中,但即使这样似乎也不起作用。我尝试从 localhost 和我的 firebase 托管运行它,但两者都出现错误。任何帮助将不胜感激!
【问题讨论】:
-
出于某种原因 - 是的,您尝试访问的跨源资源不希望您访问它......并将 reqponse 标头添加到您的请求中获胜't fix that ... cors 由服务器控制,而不是客户端 - 但是,此代码在 nodejs 中运行?所以这很奇怪
-
那你有什么建议呢?
-
首先,这段代码是在浏览器中还是在nodejs中?如果是浏览器,那么你不能轻易绕过 CORS - 只需使用 your 服务器向远程服务器发出请求
-
它在浏览器中运行,将数据发送到我的 Firebase 函数之一。此功能在我的反应应用程序中单击按钮时运行。我可以在函数中运行其中的大部分内容,但我仍然需要发送 UID,这仍然会导致这个问题,这意味着我认为我必须为此找到解决方案。
-
https://us-central1-zenmail-bfd57.cloudfunctions.net/***是跨域的 - 所以服务器需要允许这样的访问
标签: javascript node.js firebase