我在运行项目时遇到以下错误。
无法加载https://us-centralx-xxx.cloudfunctions.net/xxx:对印前检查请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许访问源“http://localhost:3000”。响应的HTTP状态代码为500。
在阅读了许多SO帖子后,我发现了以下解决方案,其中我需要添加Access-Control-Allow-Origin
,Access-Control-Allow-Methods
和Access-Control-Allow-Headers
const HEADERS = {
'Accept': 'application/json',
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': 'http://localhost:3000/',
'Access-Control-Allow-Methods': 'POST',
'Access-Control-Allow-Headers': 'X-Requested-With,content-type'
};
但是,错误仍然存在。我该如何解决这个问题?
更新
exports.uploadFile = functions.https.onRequest((req, res) => {
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader('Access-Control-Allow-Methods', 'GET,POST,DELETE,HEAD,PUT,OPTIONS');
res.setHeader('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
res.status(200).json({
message: req.body
});
});
4条答案
按热度按时间nwwlzxa71#
在你的Node.js服务器中设置适当的头文件以允许受控的CORS请求:
另一个选择是使用Express.js CORS package并根据您的需要进行配置。
8mmmxcuj2#
当我意识到我没有将函数部署到Firebase时,我遇到了这个问题,并得到了同样的错误。部署它阻止了错误。太傻了,但犯同样的错误并不难。
zaq34kh63#
gjmwrych4#
尝试从Firebase函数检查日志。在我的情况下,Chrome Devtools显示CORS错误:
作为解决方案,缺少Barear令牌是需要解决的问题。
一定要检查日志。