Cors - этот атрибут домена set-cook ie недопустим в отношении текущего URL хоста - PullRequest
0 голосов
/ 31 марта 2020

У меня есть бэкэнд узла, который должен разрешать перекрестный запрос от моего приложения внешнего интерфейса, работающего на localhost: 3000. Поэтому я ограничил политику cors для своего домена.

import csrf from 'csurf';

app.use(
  cors({
    origin: 'http://localhost:3000',
    credentials: true
  })
);

const csrfProtection = csrf({
  cookie: {
    maxAge: 900,
    domain: 'http://localhost:3000'
  }
})

router.get('/csrfToken', csrfProtection, async (req, res, next) => {
  res.json({ token: req.csrfToken() });
});

Когда я сейчас делаю запрос к моей конечной точке сервера (которая работает на localhost: 5000), он возвращает мне следующую ошибку, которая повар ie не может быть установлен.

  fetch('http://localhost:5000/csrfToken', {
      method: 'GET',
      credentials: 'include'
 })

enter image description here enter image description here

1 Ответ

1 голос
/ 31 марта 2020

Это не имеет ничего общего с CORS. Это просто, как куки работают.


Домен в заголовке set-cookie говорит http://localhost:3000, но запрос для http://localhost:5000.

Это другой источник и так является недопустимым поваром ie.


Для заголовка set-cookie из одного источника невозможно установить повара ie для другого источника. http://localhost:5000 может устанавливать файлы cookie только для http://localhost:5000.


Если вы действительно хотите установить готовку ie для :3000, то обходным путем будет предоставление данных через некоторые другие отформатировать, чем готовить ie (например, в теле запроса), а затем на стороне клиента JS на http://localhost:3000 установить повар ie, используя document.cook ie API .

Если вы хотите установить для повара ie значение :5000 (что представляется более вероятным), укажите номер порта прямо в заголовке set-cookie.

const csrfProtection = csrf({
  cookie: {
    maxAge: 900,
    domain: 'http://localhost:5000'
  }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...