为 Firebase Cloud Functions 启用 Cors

yum*_*sta 8 javascript node.js cors firebase google-cloud-functions

我正在尝试为我的 http Cloud Functions启用cors。但是,即使按照这个使用 cors 的示例,在尝试时fetch,它仍然给我错误:

对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。

这是我的云功能:

const functions = require('firebase-functions');
const cors = require('cors')({origin: true});

exports.foo = functions.https.onRequest((req, res) => {
    return cors(req, res, () => {
        let format = req.query.format;
        if (!format) {
            format = req.body.format;
        }

        //do stuff

    });
});
Run Code Online (Sandbox Code Playgroud)

这是我获取的方式:

fetch("https://us-central1-my-database.cloudfunctions.net/foo", {
    method: "POST", 
    body: JSON.stringify(data),
    headers: {
      "Content-Type": "application/json"
    }
}).then((res) => {
    // ...
}).catch((err) => {
    // ...
});
Run Code Online (Sandbox Code Playgroud)

为什么 cors 不起作用,我该如何解决?

ajo*_*era 1

尝试使用 cors 及其默认参数

{
    "origin": "*",
    "methods": "GET,HEAD,PUT,PATCH,POST,DELETE",
    "preflightContinue": false,
    "optionsSuccessStatus": 204
}
Run Code Online (Sandbox Code Playgroud)

在您的情况下,您只需要更改一行:

{
    "origin": "*",
    "methods": "GET,HEAD,PUT,PATCH,POST,DELETE",
    "preflightContinue": false,
    "optionsSuccessStatus": 204
}
Run Code Online (Sandbox Code Playgroud)