【发布时间】:2018-08-17 02:34:39
【问题描述】:
我在使用 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 机制?
更新:
通过在我的 onRequest 处理程序中使用 cors(),我可以在不使用 express 的情况下工作:
exports = module.exports = functions.https.onRequest(async(req, res) => {
cors(req, res, () => {});
await charge_card(req, res);
});
不理想,但现在可以使用:/
【问题讨论】:
-
阅读错误信息。 “响应的 HTTP 状态代码为 404。”你刚才输入的网址有误。
-
@Quentin 不,这是正确的。我已经检查过了,即使 URL 正确,似乎也会有 404。我会更新帖子。
标签: firebase google-cloud-functions