Я использую Next.js для клиента, django для сервера API.Next.js: 127.0.0.1:3000 django: 127.0.0.1:8000
Проблема
При отправке GET-запроса на api-сервер с axios куки не будутзадавать.Эти куки были отправлены api, установленным в браузере как httpOnly.
Исходный код
отправить запрос GET следующим образом:
const auth = axios.create({
baseURL: 'http://127.0.0.1:8000/api/v1/auth',
headers: { 'Content-Type': 'application/json' },
withCredentials: true
})
const { data } = await auth.get('/test/')
настройки djangoо CORS:
CORS_ORIGIN_ALLOW_ALL = False
CORS_ORIGIN_WHITELIST = (
'127.0.0.1:3000'
)
CORS_ALLOW_CREDENTIALS = True
куки: ![enter image description here](https://i.stack.imgur.com/FajQi.png)
Что я пробовал
Во-первых, я проверил сервер APIполучает запрос или нет
const { data } = await auth.get('/user/', {
headers: {
Cookie: `token=${token}`
}
})
Когда я прикрепляю куки вручную, как описано выше, это работает.Я мог бы проверить этот запрос. У Cookies есть файлы cookie в django.
Просто чтобы быть уверенным, я также отправляю запрос GET с файлами cookie через Postman, он работает.Джанго получил печенье.
Тогда я подумал, что у Аксиоса, возможно, есть некоторые проблемы.Итак, я попробовал извлечь, изоморфно-извлечь и изоморфно-получить.Но это не сработало.
Это результат запроса GET в chrome.![enter image description here](https://i.stack.imgur.com/aejQ1.png)
Наконец, это отрывок результатов, которые запрашивает django.META при отправке каждого запроса через Почтальон и Axios.
Postman
'HTTP_CACHE_CONTROL': 'no-cache',
'HTTP_POSTMAN_TOKEN': '9077175d-4da7-4196-b2c6-3ef0b04568f9',
'HTTP_USER_AGENT': 'PostmanRuntime/7.6.0',
'HTTP_ACCEPT': '*/*',
'HTTP_HOST': '127.0.0.1:8000',
'HTTP_COOKIE': 'token=179780f7ca388ae1dec47f5dee717a4b7cb5848e0c21b68b2a5715e62115570b',
'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
'HTTP_CONNECTION': 'keep-alive'
axios
'HTTP_ACCEPT': 'application/json, text/plain, */*',
'HTTP_USER_AGENT': 'axios/0.18.0',
'HTTP_HOST': '127.0.0.1:8000',
'HTTP_CONNECTION': 'close'