Django не устанавливает cookie

У меня проблема с установкой cookies в Django.

В основном у меня есть 3 разных cookie, которые я хочу установить:

  1. Идентификатор сессии
  2. Токен доступа
  3. 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 и браузер их видит.

Вернуться на верх