Сложность отправки файлов cookie с запросами на выборку в JavaScript

У меня есть две отдельные службы, одностраничное приложение React и API express, и я пытаюсь связаться с SPA в API с помощью новой функции fetch. Поскольку две службы лежат на разных доменах, я использую промежуточное ПО CORS внутри приложения express, чтобы отправлять запросы из SPA в API. Я пытаюсь, чтобы любые запросы fetch также включали файлы cookie, поэтому я могу проверить файлы cookie в моем приложении express, например

На стороне клиента:

fetch('http://localhost:8000/hello', { 
    credentials: 'include', 
    mode: 'cors' 
}).then(/* ... */)

На стороне сервера:

var app = express();

app.use(cors({ credentials: true });
app.use(cookieParser());

app.get('/hello', function (req, res) {
  // Try and find the cookies sent with the request
  console.log(req.cookies);

  res.status(200).json({ message: 'cookies received!' });
});

Однако, независимо от того, что я пытаюсь, я до сих пор не могу получить доступ к файлам cookie в объекте request, хотя я могу получить к ним доступ с помощью document.cookies.

Пример файла cookie:

name: token
value: TOKEN_VALUE
domain: localhost
path: /
http: false
secure: false

Есть ли у кого-нибудь предложения по тому, как подойти к этому? Любая помощь будет принята с благодарностью!

Ответ 1

Библиотека fetch polyfill, которую вы используете, не относится к этой записи до спецификации. Для учетных данных он ожидает, что "корс" будет значением, а не "include". Я бы отредактировал свою локальную копию fetch.js в строке 264, чтобы разместить стандарт, отправить запрос на перенос и быть в поиске лучшей поддерживаемой библиотеки polyfill.

См. открытую проблему: https://github.com/github/fetch/issues/109

https://github.com/github/fetch

https://developer.mozilla.org/en-US/docs/Web/API/GlobalFetch/fetch