Активация учетной записи с помощью Django в новейшем Safari не работает

Я столкнулся со странной проблемой при использовании Djoser для активации учетной записи. Мое веб-приложение успешно позволяет вам зарегистрировать учетную запись и отправляет вам активационный email для вашей учетной записи. Однако при вводе ссылки активации, отправленной на мой email в Safari, я получаю ответ 401 (неавторизованный). При вводе ссылки активации в Chrome учетная запись успешно активируется. Почему это может происходить?

Следует также отметить, что у меня все Dockerized и работает через NGINX. Если я локально запускаю свое приложение React с помощью npm start, а затем добавляю :3000 к полученному URL для активации, это также успешно работает для активации учетной записи в Safari. Например, если я получаю http://localhost/activate/xyz/abcdef в качестве активационного email, редактирую его до http://localhost:3000/activate/xyz/abcdef и ввожу этот URL в Safari при локальном запуске приложения React, он успешно активирует аккаунт.

В моем settings.py есть такая конфигурация для Djoser:

DJOSER = {
    "USER_ID_FIELD": "username",
    "LOGIN_FIELD": "email",
    "SEND_ACTIVATION_EMAIL": True,
    "ACTIVATION_URL": "activate/{uid}/{token}",
    "PASSWORD_RESET_CONFIRM_URL": "reset_password/{uid}/{token}",
    'SERIALIZERS': {
        'token_create': 'apps.accounts.serializers.CustomTokenCreateSerializer',
    },
}

PROTOCOL = "http"
DOMAIN = "localhost"
if not DEBUG:
    PROTOCOL = "https"
    DOMAIN = "domain.com"

EMAIL_HOST = 'smtp.gmail.com'
DEFAULT_FROM_EMAIL = 'Don\'t Reply <do_not_reply@' + DOMAIN + '.com>'
EMAIL_HOST_USER = 'xyz@gmail.com' 
EMAIL_HOST_PASSWORD = 'xyz'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
SITE_NAME = "xyz"

CORS_ALLOWED_ORIGINS = [
    "http://localhost:3000",
    "http://127.0.0.1:3000",
    "http://localhost",
    "http://127.0.0.1",
]

Это в моем App.js:

<Route path="/activate/:uid/:token" component={ActivateAccount} />

Вот соответствующая часть ActivateAccount.js:

componentDidMount() {
    const { uid, token } = this.props.match.params;

    axios
      .post("/api/v1/users/activation/", { uid, token })
      .then(response => {
        this.setState({ status: "success" });
      })
      .catch(error => {
        this.setState({ status: "error" });
      });
  }

Заранее спасибо! Дайте мне знать, если потребуется любая другая информация.

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