Fetch API с Cookie

Я пробую новый API Fetch, но у меня проблемы с куки. В частности, после успешного входа в систему в будущих запросах есть заголовок Cookie, но Fetch, похоже, игнорирует эти заголовки, и все мои запросы, сделанные с помощью Fetch, несанкционированы.

Это потому, что Fetch все еще не готов или Fetch не работает с Cookies?

Я создаю свое приложение с помощью Webpack. Я также использую Fetch в React Native, который не имеет той же проблемы.

4 ответов


Fetch не использует cookie по умолчанию. Чтобы включить cookie, сделайте следующее:

fetch(url, {
  credentials: "same-origin"
}).then(...).catch(...);

в дополнение к ответу @Khanetor, для тех, кто работает с запросами cross-origin:credentials: 'include'

Образец запроса выборки JSON:

fetch(url, {
  method: 'GET',
  credentials: 'include'
})
  .then((response) => response.json())
  .then((json) => {
    console.log('Gotcha');
  }).catch((err) => {
    console.log(err);
});

https://developer.mozilla.org/en-US/docs/Web/API/Request/credentials


только что решена. Просто два Ф. дни brutforce

для меня секрет был в следующем:

  1. Я вызвал POST/api / auth и увидел, что cookies были успешно получены.

  2. затем вызов GET/api/ users / with credentials: 'include' и получил 401 unauth, потому что никакие куки не были отправлены с запросом.

ключ должен установить credentials: 'include' для первого вызова /api/auth тоже.


async function fetchAsync () {
  let response = await fetch('https://api.github.com/users/pariyathida/repos');
  let data = await response.json();
  return data;
}
fetchAsync()
    .then(data=> data.map(repo => console.log(repo.id)))
    .catch(reason => console.log(reason.message))