【问题标题】:How to enable cors in nodejs [duplicate]如何在nodejs中启用cors [重复]
【发布时间】:2019-04-05 02:41:55
【问题描述】:

我想在我的 nodejs 中启用 cors。
有人可以说我该怎么做吗?
我应该在哪里改变什么?

我想通过 Heroku 发布我的链接。 但我只能使用 get、post、put、delete 如果我 put 现有链接前的“https://cors-anywhere.herokuapp.com”。

谢谢你帮助我,

const express = require('express');
const route = express.Router();
const messages = [
 {
   id: 1,
   user: "Pikachu",
   message: "pika pika"
 },
 {
   id: 2,
   user: "Ash",
   message: "I choose you!"
 },
 {
   id: 3,
   user: "Misty",
   message: "Can't drive, it's to misty"
 },

 {
   id: 911,
   user: "Emergency",
   message: "bee doo bee doo"
 } 
];

route.get('/', function(request, response, next) {

  // Render express index pagina
  response.render('index', { title: 'Lab 5' });
  response.end();
});


route.get('/api/v1/messages/:id', (request, response) => {

  // controleren of er een ID overeenkomt met een bestaande ID
  const message = messages.find(my_int => my_int.id === parseInt(request.params.id));


  if(!message){
    // geen message gevonden = foutmelding
    response.status(404).json({status:"error","message":"Message with ID " + request.params.id +" does not exist"})
  }
  else {
    // wel message gevongen = json doorsturen
    response.json({status:"success", message:"GETTING message with ID " + request.params.id});
  }
});


route.post('/api/v1/messages/', (request, response) => {

  const new_message = { id: request.params.id, user: 
  request.query.user, message: request.body.message };
  messages.push(new_message);
  response.json({ status:"success", message:"POSTING a new message 
  for user " + request.query.user});
});

module.exports = route;

【问题讨论】:

标签: node.js cors-anywhere


【解决方案1】:

你需要有中间件来传递 cors,这将允许 origins

在消息变量之后使用以下中间件:

route.use(function(req, res, next) {
        res.setHeader('Access-Control-Allow-Origin', '*');

        // Request methods you wish to allow
        res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');

        // Request headers you wish to allow
        res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type, Authorization');

        // Set to true if you need the website to include cookies in the requests sent
        // to the API (e.g. in case you use sessions)
        res.setHeader('Access-Control-Allow-Credentials', true);

        // Pass to next layer of middleware
        next();
});

注意:如果您只想允许某些来源或域/IP 替换 '*'

例如:

  res.setHeader('Access-Control-Allow-Origin', 'http://localhost:3636');

【讨论】:

    猜你喜欢
    • 2019-05-15
    • 1970-01-01
    • 2014-04-26
    • 2017-08-26
    • 2018-10-11
    • 2018-12-03
    • 2017-02-20
    相关资源
    最近更新 更多