Краткая версия: мой токен jwt не переживает обновления при указании на домен за Cloudfront.
Не уверен, лучше ли это опубликовать здесь или в stackoverflow, но, поскольку я думаю, что изолировал проблему от AWS Cloudfront, я решил начать здесь.
Моя установка:
На моем местном все идеально. Когда я запускаю свой тестовый сайт и посещаю страницу своего профиля, все пользовательские данные заполняются в соответствующих полях. Когда я обновляю страницу, что-то происходит с токеном JWT, и все пользовательские данные теряются. Это происходит и на других страницах за аутентификацией.
Вместо того, чтобы указывать мои вызовы api на постановку (которая находится за облачным фронтом), я попытался указать свой api прямо на мой экземпляр ec2, и все сработало отлично.
Итак, когда проблема изолирована от Cloudfront, что мне нужно делать (нужно ли мне пересылать определенные заголовки), чтобы токен JWT успешно передавался каждый раз?
Если вы отправляете свой JWT в заголовке, то ваше предположение было правильным, вы должны указать CloudFront пересылать заголовок источнику. Этого можно добиться, изменив Cache Based on Selected Request Headers
в вашем поведении кеша на одно из этих значений:
Имейте в виду, что эта опция имеет две функции:
Убедитесь, что вы понимаете, как это может повлиять на поведение вашего кеша. Вы можете прочитать об этом подробнее на Кэширование контента на основе заголовков запросов
Есть еще один вариант, который вы можете настроить в своем поведении кеша, который я почти всегда использую: Object Caching
. Вы можете установить кеширование объекта на Use Origin Cache Headers
таким образом ваше приложение может контролировать кеширование ответов. Этот параметр может быть доступен или недоступен в зависимости от вашего происхождения (S3 / ALB / EC2) и / или вашего Cache Based on Selected Request Headers
стоимость.
Надеюсь, это поможет.