这是我得到的错误:
Access to XMLHttpRequest at has been blocked by CORS policy: Response to preflight request
doesn't pass access control check:
No 'Access-Control-Allow-Origin' header is present on the requested resource.
这是我的云功能:
...
app.use(cors({
origin: true,
}))
app.use(express.json());
app.use(express.urlencoded({extended: false}));
app.post('/submit', async (req, clientRes) => {
...
}
exports.app = functions.region('europe-west2').runWith({timeoutSeconds: 540, memory: '2GB'}).https.onRequest(app);
这是我从客户端发出的发帖请求:
axios.post('/submit', body, {headers: {
// 'Access-Control-Allow-Origin': '*',
'Content-Type': 'application/json',
}});
我尝试设置Access-Control-Allow-Origin: '*'
,Access-Control-Allow-Origin: mydomain.com
以及Access-Control-Allow-Origin: cloudFunctionDomain.net
,但仍然无法正常工作。
非常感谢您的帮助。
答案 0 :(得分:0)
根据[1],这种导入方式似乎对很多人都有效:
const cors = require('cors')({origin: true});
如[1]中所述,还有一些代码示例,您可以从此处查看[2]。
答案 1 :(得分:-1)
您应将Access-Control-Allow-Origin
添加到服务器,而不是客户端。所以代替:
app.use(cors({
origin: true,
}))
您应该使用:
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});