嗨,我把我的mp3文件存储在Firebase的存储中。将“规则”选项卡下的权限设置为:
allow read, write, request;为了从那里获取文件,我使用了react axios。
加载页面时,会收到请求被CORD策略阻止的错误:
Access to XMLHttpRequest at
'gs://******.appspot.com/****/****' from origin 'http://localhost:3000'
has been blocked by CORS policy: Cross origin requests are only
supported for protocol schemes: http, data, chrome, chrome-extension,
https.我安装了gsutil,然后运行命令:
gsutil cors set cors.json gs://****.appspot.com运行此命令时没有发现任何错误。
这是cors.json文件:
[
{
"origin": ["http://localhost:3000","gs://******.appspot.com"],
"method": ["GET"],
"maxAgeSeconds": 3600
}
]然而,当我加载我的网站时,我仍然会遇到同样的错误.
发布于 2019-02-15 11:50:12
由于错误消息状态,因此只允许对某些协议进行跨源请求。这是在大多数浏览器中实现的一种安全措施。如果您对这种策略是什么感兴趣的话,在科德勒密上有一篇很好的文章。
我建议的解决该问题的方法是在该主机上设置一个后端api服务器,让它从db查询所需的信息,添加必要的CORS头,并将其发送到运行前端的浏览器。
您可以使用node.js使用express.js来实现这一点。请参阅下面的例子。
const cors = require('cors');
const express = require('express');
const app = express();
function getmusicfunction(req, res) {
console.log('GET /getmusic');
# query the db for your file here and store it into your body bariable
res.send(body);
}
const corsOptions = {
origin: '*',
optionsSuccessStatus: 200,
};
app.use(cors(corsOptions));
app.get('/getmusic', (req, res) => getmusicfunction(req, res));
const port = 6667;
app.listen(port, () => console.log('API listening on port ' + port + '!'));编辑:我把Firebase和Firebird混淆了。抱歉的。我收回答案。
https://stackoverflow.com/questions/54708205
复制相似问题