#django #cookies #iframe #django-allauth
#django #файлы cookie #iframe #django-allauth
Вопрос:
У меня есть компонент, похожий на форум, который я использую в iframe на других веб-сайтах. Этот компонент использует django-allauth для аутентификации в Facebook и Twitter. Все работало нормально, но теперь аутентификация перестала работать некоторое время назад. Когда я просматриваю файлы cookie в своем браузере, файлы cookie из Facebook / Twitter, которые устанавливаются iframe, не загружаются. Хотя файлы cookie из самого компонента установлены. Аутентификация по-прежнему работает, когда я загружаю iframe на веб-сайт, который находится на другом поддомене самого компонента.
Инструмент на другом поддомене (рабочий): https://shop-sandbox.adbuddy.be/discussie /
Инструмент в совершенно другом домене (не работает): https://mama-calinka .webbuddy.be/discussie /
Я предполагаю, что эта проблема была как-то связана с CORS-заголовками, но ничего из того, что я пробовал, не помогло. Может кто-нибудь помочь мне с этой проблемой, пожалуйста?
Ответ №1:
Если это перестало работать совсем недавно, это может быть связано с недавним критическим изменением Chrome, которое заключается в том, что в случае, если атрибут cookie SameSite явно не задан, по умолчанию используется значение SameSite = Lax, что не позволяет вашему браузеру в межсайтовых запросах отправлять cookie.
Я проверил ваш https://shop-sandbox.adbuddy.be/discussie / — существует много файлов cookie с одним и тем же пустым сайтом.
Может быть еще несколько причин, по которым браузер игнорирует файл cookie в запросе, и я попытался суммировать их все в своем блоге здесь
Комментарии:
1.Большое вам спасибо! Это действительно было проблемой. Для других пользователей Django вам необходимо обновить версию Django до at lease 3.1 и в вашем settings.py набор файлов
CSRF_COOKIE_SAMESITE = 'None'
CSRF_COOKIE_SECURE = True
CSRF_COOKIE_HTTPONLY = True
SESSION_COOKIE_SAMESITE = 'None'
SESSION_COOKIE_SECURE = True
SESSION_COOKIE_HTTPONLY = True