Django не устанавливает cookie
У меня проблема с установкой cookies в Django.
В основном у меня есть 3 разных cookie, которые я хочу установить:
- Идентификатор сессии
- Токен доступа
- Refresh token
По какой-то причине токены Access и Refresh устанавливаются, но идентификатор сессии (SSID) не устанавливается. Если я изменю ключ "SSID", например, на "TEST_COOKIE", он проходит, и я могу видеть его в dev tools. Однако мне нужен SSID и по какой-то магической причине он не работает.
Вот пример моего кода:
class AuthResponse(SuccessResponse):
def __init__(self, data={}, ssid='', access_token: str = '', refresh_token: str = '', **kwargs):
super().__init__(data, **kwargs)
self.set_cookie(key=settings.SESSION_COOKIE_NAME,
value=ssid,)
if access_token:
self.set_cookie(key=settings.ACCESS_KEY_COOKIE_NAME,
value=access_token,)
if refresh_token:
self.set_cookie(key=settings.REFRESH_KEY_COOKIE_NAME,
value=refresh_token,)
AuthResponse наследуется от SuccessResponse, который основан на DjangoJsonResponse, а DjangoJsonResponse в конечном итоге наследуется от HttpResponse.
Итак, вопрос - что может быть причиной избавления от куки "SSID"?
Я попытался посмотреть и найти, все ли данные появляются в функции init и, похоже, все в порядке. Все данные, ssid, access_token и refresh_token появляются, но только "SSID" не устанавливается
Также я пытался использовать "httponly" и "secure" при установке cookies, но это не помогло.
Была идея, что на это может как-то повлиять промежуточное ПО, однако я не знаю, кто может это проверить...
Есть ли кто-нибудь, кто знаком с этим, кто потенциально может дать совет, почему это происходит?
Заранее спасибо!
Я нашел ответ, работая на localhost, SESSION_COOKIE_DOMAIN не должен использоваться, поэтому я сделал его таким образом в settings.py:
if website_settings.current_instance != 'dev':
SESSION_COOKIE_DOMAIN = (
website_settings.session_cookie_domain
if website_settings.session_cookie_domain
else f".{SITE_DOMAIN}"
)
Таким образом, он сохраняет все необходимые cookies и браузер их видит.