Как я могу исправить эту ошибку с CORS в моем приложении nodejs - PullRequest
0 голосов
/ 22 октября 2019

У меня есть следующий код в fe:

  getTasks = () => {
    axios.get("http://127.0.0.1:3000/api/getTasks", {
      withCredentials: true
    }).then(response => {
      console.log(response)
    })
  }

и этот код будет:

var app = express();
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.use(cookieParser());

app.use(function (req, res, next) {
  res.header('Access-Control-Allow-Origin', req.header('origin'));
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  res.header("Access-Control-Allow-Credentials: true");
  next();
});

, когда пользователь входит в систему и запрашивает getTasks (), я получаю эту ошибку:

Access to XMLHttpRequest at 'http://127.0.0.1:3000/api/getTasks' from origin 'http://localhost:3002' has been blocked by CORS policy: The value of the 'Access-Control-Allow-Credentials' header in the response is '' which must be 'true' when the request's credentials mode is 'include'. The credentials mode of requests initiated by the XMLHttpRequest is controlled by the withCredentials attribute.

Ответы [ 3 ]

0 голосов
/ 22 октября 2019

Подробнее о CORS можно узнать на веб-сайте enable-cors , а также есть примеры кодов CORS для ExpressJS.

В приложении ExpressJS на node.js выполните следующие действия. с вашими маршрутами:

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "YOUR-DOMAIN.TLD"); // update to match the domain you will make the request from
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  res.header("Access-Control-Allow-Credentials", "true")
  next();
});

app.get('/', function(req, res, next) {
  // Handle the get for this route
});

app.post('/', function(req, res, next) {
 // Handle the post for this route
});
0 голосов
/ 22 октября 2019

Возможно, вы неправильно устанавливаете свойство.

Попробуйте: res.header("Access-Control-Allow-Credentials", "true");

0 голосов
/ 22 октября 2019

Вы можете использовать npm CORS для этого

var express = require('express')
var cors = require('cors')
var app = express()

app.use(cors())

// other stuff
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...