【发布时间】:2020-10-20 13:19:26
【问题描述】:
我为云功能实现了一个基本的快速应用程序。我使用了 cors 库来启用 cors。有 4 个 api 端点,所有 4 个都需要预检。出于某种原因,access-control-allow-origin:* 标头放置在 3 条路线上,而不是第 4 条路线上。
准确地说,我正在使用 Content-Type: application/json 进行 POST 请求,这需要进行预检。所有端点都需要相同的标头,但不适用于最后一个。
代码sn-ps:
const express = require("express");
const cors = require("cors");
const bodyParser = require('body-parser');
const admin = require("firebase-admin");
admin.initializeApp();
const app = express();
app.use(cors());
app.use(bodyParser.json());
app.use(express.json());
app.use('/', require('./controllers'));
exports.apiv2 = functions.https.onRequest(app);
路线:
const express = require('express');
const router = express.Router();
router.use('/create-player', require('./createPlayer'));
router.use('/create-game', require('./createGame'));
router.use('/join-game', require('./joinGame'));
router.use('/move', require('./makeMove'));
// 404 error handler for invalid player and game IDs
router.use((err, req, res, next) => {
res.json({ error: err.msg });
});
module.exports = router;
仅对于 /move 路由,cors 请求失败,即使在预检请求通过后也是如此。 Preflight passes with 204。实际请求由于某种原因失败。 The POST request fails
是否有任何特定的访问控制标头不是由 express 仅针对一个端点放置的?
【问题讨论】:
标签: node.js express google-cloud-functions cors preflight