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
для меня секрет был в следующем:
Я вызвал POST/api / auth и увидел, что cookies были успешно получены.
затем вызов 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))