首页 > 解决方案 > 我可以从应用程序将 cors 扩展到路由器吗?

问题描述

我有两个问题:

server.js现在可以像下面那样处理 CORS,但app也可以处理users路由器。

server.js处理请求/

const cors = require('cors');
const express = require('express');
const users = require('./routers/users');
const app = express();
app.use(cors());
app.use('/api/v1/user', users); // Register the user router

routers/users.js处理请求/users

const cors = require('cors'); // Required again
const express = require('express'); // Required again
const router = express.Router();
router.use(cors());

如果我不使用,我会在访问时在浏览器上router.use(cors())收到一个CORS/api/v1/users

标签: javascriptnode.jsexpresscors

解决方案


  1. 是的,您只需要对整个应用程序使用一次 cors()。
  2. require express不,如果您将路线隔离在单独的文件中,则需要在每个文件中

文件夹结构:

+ index.js
+ routers
  + users.js
  + server.js
+ controllers
  + user_controller.js

您的index.js文件应如下所示:

const cors = require('cors');
const express = require('express');
const serverRoutes = require('./routers/server');

const app = express();

// Allow cross origin access.
app.use(cors());

app.use('/', serverRoutes);

您的server.js文件应如下所示:

const router = require('express').Router();
const userRoutes = require('./users');


router.use('/api/v1/user', userRoutes); // Register the user router

module.exports = router;

您的user.js文件应如下所示:

const router = require('express').Router();
const userController = require('../controllers/user_controller');

router.get('/', (req, res) => {
    userController.list(req, res); // or whatever your code is.
});

module.exports = router;

推荐阅读