Firebase HTTP 函数 CORS

标签 firebase google-cloud-functions

我在使用 Firebase HTTP 函数时仍然遇到 CORS 问题。

这是我的网络控制台错误:

Response to preflight request doesn't pass access control check: No 
'Access-Control-Allow-Origin' header is present on the requested resource. 
Origin 'http://localhost:3000' is therefore not allowed access. The 
response had HTTP status code 404.

这是我的功能:

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

const app = express();
const validate_user = require('./validate_user_id_token.js');
const charge_card = async(req, res) => {
  // ...
}

app.use(cors);
app.use(validate_user);
app.use(charge_card);

exports.foo = functions.https.onRequest(app);

我想我已经阅读了每一个 Firebse CORS 问题。我还有所提供样本的近似复制品 here .

请帮忙:)

编辑: 我调用的 URL 是正确的(使用 texdiff.com 只是为了确定,函数日志显示它已执行但返回 404)。由于未知原因,无论如何都会返回 404。也许这就是 CORS 机制?

更新: 通过将 using cors() 放在我的 onRequest 处理程序中,我在不使用 express 的情况下工作:

exports = module.exports = functions.https.onRequest(async(req, res) => {
    cors(req, res, () => {});
    await charge_card(req, res);
});

不理想,但现在可以用了:/

最佳答案

根据 Firebase 文档,有几个对 CORS 配置的引用:

使用 CORS:

您可以 enable the use of CORS通过在函数中调用它,就像您在更新问题时所做的那样:

// Usage of the `cors` express middleware
return cors(req, res, () => {
  // TO-DO
});

此外,如果您已有现有的 Express 应用程序,you can then enable CORS通过做:

const app = express();
app.use(cors({ origin: true }));

这是您在第一步中已经完成的操作,但在 { origin: true } 定义中存在差异,所以这可能是相关的。

无论如何,根据文档,在请求中添加 cors 确实没问题。

关于Firebase HTTP 函数 CORS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49178210/

相关文章:

Firebase REST API 与 JS 客户端库

java - 如果我想使用 Google App Engine 从服务器代码写入 Firebase,是否需要启用计费?

javascript - Firebase 响应具有 HTML 标签

firebase - 使用 Firebase Functions 处理来自 Woocommerce 的多个 Webhook 时,我应该使用单个云函数还是多个云函数? (Webhook 最佳实践)

javascript - 云函数编写自定义字段

reactjs - Typeorm + Firebase 函数 : "No connection options were found in any orm configuration files" after deployed

Firebase函数模拟器useFunctionsEmulator()方法不起作用

javascript - 如何通过两个不同的索引访问相同的Firebase数据?

firebase - Firebase 是云功能吗?术语 2gen 和 v2 指的是同一个东西吗?

javascript - gcloud函数: How to include local javascript helper files during deployment?