代码之家  ›  专栏  ›  技术社区  ›  abu abu

express.js项目中的CORS问题

  •  0
  • abu abu  · 技术社区  · 5 年前

    server.js 文件 express.js

    const express = require('express');
    const bodyParser = require('body-parser');
    const addressroute = require('./api/routes/address');
    const userroute = require('./api/routes/user');
    const mongoose = require('mongoose');
    mongoose.set('useCreateIndex', true);
    mongoose.connect('mongodb://localhost/addresses', { useNewUrlParser: true });
    const db = mongoose.connection;
    
    var cors = require('cors');
    
    
    let app = express();
    app.use(bodyParser.urlencoded( { extended:true } ));
    app.use(bodyParser.json());
    app.use('/api/address', addressroute);
    app.use('/api/users', userroute);
    app.use(cors());
    app.options('*', cors());
    const PORT = process.env.PORT || 4000;
    app.listen(PORT);
    

    我安装了CORS npm install cors --save 这是命令。

    Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:4000/api/users/register. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).[Learn More]
    Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:4000/api/users/register. (Reason: CORS request did not succeed).
    

    enter image description here

    0 回复  |  直到 5 年前
        1
  •  2
  •   Matt Carlotta    5 年前

    cors 在您的路线上方:

    const app = express();
    const PORT = process.env.PORT || 4000;
    
    app.use(bodyParser.urlencoded( { extended:true } ));
    app.use(bodyParser.json());
    app.use(cors());
    app.use('/api/address', addressroute);
    app.use('/api/users', userroute);
    app.listen(PORT);
    
        2
  •  0
  •   haMzox    5 年前

    请尝试使用以下代码段:

    app.all('/*', function(req, res, next) {
      res.header("Access-Control-Allow-Origin", "*");
      res.header("Access-Control-Allow-Headers", "X-Requested-With");
      next();
    });
    
        3
  •  0
  •   Ranjith Rana    5 年前
    // Try to use the following code   
    app.use(function(req, res, next) {
          res.header("Access-Control-Allow-Origin", "*");
          res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
          next();
        });
    
        4
  •  0
  •   tomericco    5 年前

    你应该把CORS移走( app.use(cors()); )在定义路由之前执行。在这里添加的代码段中,不会对每个请求调用CORS中间件

        5
  •  0
  •   shradha    5 年前

    Cors应该在您的路由之前启用或包含。

    const express = require('express');
    const cors = require('cors');
    const bodyParser = require('body-parser');
    const addressroute = require('./api/routes/address');
    const userroute = require('./api/routes/user');
    const mongoose = require('mongoose');
    mongoose.set('useCreateIndex', true);
    mongoose.connect('mongodb://localhost/addresses', { useNewUrlParser: true });
    const db = mongoose.connection;
    
    
    
    let app = express();
    app.use(bodyParser.urlencoded( { extended:true } ));
    app.use(bodyParser.json());
    
    app.use(cors());
    
    app.use('/api/address', addressroute);
    app.use('/api/users', userroute);
    const PORT = process.env.PORT || 4000;
    app.listen(PORT);
    
        6
  •  -1
  •   Manish Gowardipe    5 年前

    从前端添加调用api时 '访问控制允许来源':'*'