首页 > 解决方案 > Node js express\ react js cors问题

问题描述

我正在处理 express js 中的 CORS 问题,所以问题是当我使用 CORS 库时,我通常会在邮递员中收到 cors 标头而没有问题,如下图所示邮递员响应标头

但是当我从我的 React js 调用相同的 api 时,我得到一个 cors 错误,并且响应标头中没有 cors 标头。

第二个问题是,当我在我的主应用程序中使用 cors 库时:

在 App 中使用 CORS 的 server.js 代码

我的整个快递服务器很长一段时间都没有返回任何东西。

这是 express js 中的相关代码:

//server.js

  const express = require("express");
const bodyParser = require('body-parser');


const app = express();



app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());

const dbConfig = require('./config/database.config.js');
const mongoose = require('mongoose');

mongoose.Promise = global.Promise;

mongoose.connect(dbConfig.url, {
    useNewUrlParser: true,
    useUnifiedTopology: true
}).then(()=>{
    console.log("Successfully connected to the database");
    
}).catch(err => {
    console.log('Could not connect to the database. Exiting now ...',err);
    process.exit();
    
})

app.get('/',(req, res) => {
res.json({"message" : "Welcome to EasyNotes application. Take notes quickly. Organize and keep track of all your notes."});
});

require('./app/routes/note.routes.js')(app);

app.listen(3000,() => {

    console.log("Server is listening on port 3000");
    
})

这是我的路由 js 文件

//routing

const cors = require('cors');
module.exports = (app) => {

    const notes = require('../controllers/note.controller.js');

    app.post('/notes', cors(), notes.create);

    app.get('/notes', cors(), notes.findAll);

    app.get('/notes/:noteId', cors(), notes.findOne);

    app.post('/notes/:noteId', cors(), notes.update);

    app.delete('/notes/:noteId', cors(), notes.delete);


}

最奇怪的是,我使用的是相同的 api,但使用了不同的路由,并且它在浏览器中运行良好,就像我使用这条路由时一样:

 app.get('/notes', cors(), notes.findAll);

它工作正常。

请帮忙 !!

标签: reactjsexpresscors

解决方案


在你server.js正在使用的文件中,app.use(cors)但它应该是app.use(cors()). 这是我目前正在从事的一个项目中的一个示例


require('./db')

const express = require('express')
const cors = require('cors')
const bodyParser = require('body-parser')

const mongoose = require('mongoose')

const postRouter = require('./routes/post')

const app = express()

app.use(cors())
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extended: true}))

app.use('/api', postRouter)

/*
mongoose.connection.on('connected', () => {
    
    mongoose.connection.db.listCollections().toArray(function (err, names) {
        console.log(names);
    });
})
*/
app.post('/', function(req, res) {
    res.sendStatus(200)
})


app.listen(5000, () => console.log("Server started on port 5000"));

推荐阅读