#django #cookies #axios #create-react-app #httponly
Вопрос:
Я использую серверную часть django и интерфейс CRAO. Я сохранил токен обновления jwt как файл cookie httponly:
document.cookie = `refresh=${refresh_token}; SameSite=Strict; Path=/api/token/refresh; HttpOnly`;
Затем, чтобы обновить маркер доступа, я отправляю запрос axios:
const response = await axios.post('/api/token/refresh/', { withCredentials: true });
Но в этом случае первоначально сохраненные файлы cookie не отправляются axios. Однако при удалении атрибута httponly файлы cookie действительно отправляются, и все работает нормально.
Комментарии:
1. смысл
httponly
файлов cookie в том, что они никоим образом не могут быть затронуты клиентом (т. Е. javascript).2. @yedpodtrzitko, я понимаю. Спасибо, что разъяснили это. Я знал об этом, но не понимал, что они также не будут отправлены автоматически по запросу. Есть ли у вас какие-либо другие рекомендации для достижения этой цели?
3. чего добиться?
Ответ №1:
Вы неправильно настроили файл cookie в своем приложении django. следуйте этому способу, чтобы сохранить его как файл cookie httponly:
response.set_cookie(
key=settings.SIMPLE_JWT["AUTH_COOKIE_REFRESH"],
value=token["refresh"],
expires=settings.SIMPLE_JWT["ACCESS_TOKEN_LIFETIME"],
secure=settings.SIMPLE_JWT["AUTH_COOKIE_SECURE"],
httponly=settings.SIMPLE_JWT["AUTH_COOKIE_HTTP_ONLY"],
samesite=settings.SIMPLE_JWT["AUTH_COOKIE_SAMESITE"],
)