#cookies
Вопрос:
У меня есть CDN-файл cookie google cloud bucket для доступа к моим изображениям Google cloud bucket. На моем веб — сервере все отлично работает с настройкой файлов cookie и получением изображения. Но в моей среде разработки я нахожусь на локальном хосте, и он не отправляет файлы cookie, потому что у него нет https. Каков подход к среде разработки для решения такого рода проблем, как создание локального хоста для https://localhost кажется довольно сложным для нескольких сред разработки.
Здесь в http://localhost ошибка в файле cookie
Полностью перейдите на HTTPS, чтобы файлы cookie отправлялись на подресурсы того же сайта. Файл cookie не был отправлен в безопасное место из небезопасного контекста. Поскольку этот файл cookie был бы отправлен по разным схемам на одном и том же сайте, он не был отправлен. Такое поведение повышает защиту атрибутов SameSite пользовательских данных от подделки запросов сетевыми злоумышленниками. Устраните эту проблему, полностью переведя свой сайт (как определено eTLD 1) на HTTPS. Также рекомендуется пометить файл cookie атрибутом безопасности, если это еще не так.
Ответ №1:
Для начала, похоже, что ваш рабочий процесс разработки локального хоста включает некоторые части по протоколу https, иначе вы бы не увидели это сообщение: «Файл cookie не был отправлен в безопасное место из небезопасного контекста».
Каков подход к среде разработки для решения такого рода проблем
Как такового нет, это зависит от вашего окружения. У вас есть несколько вариантов, которые вы можете рассмотреть:
- Полностью обновитесь до https. Вы упомянули, что это сложно для вашей настройки, так что это, вероятно, вам не подойдет (возможно https://web.dev/how-to-use-local-https/ помогает?).
- Полностью перейти на http во время разработки локального хоста. Эта ошибка появляется только потому, что вы пытаетесь отправлять файлы cookie по разным схемам, если все по протоколу http, то вы этого не почувствуете.
- Измените
SameSite=Strict
иSameSite=Lax
файлы cookie наSameSite=None; Secure
. Samesite=Файлы cookie не передаются свободно между схемами. - Отключите Интригующий тот же сайт через chrome://флаги/#интригующий тот же сайт. Это пройдет в ближайшие месяцы, поэтому я не рекомендую полагаться на это.
- Включите функции устаревших файлов cookie с помощью корпоративных политик LegacySameSiteCookieBehaviorEnabled или LegacySameSiteCookieBehaviorEnabledForDomainList. Этот вариант также является временным, поэтому, опять же, лучше не полагаться на него. Также это делает немного больше, например, удаляет «
SameSite=None
должно бытьSecure
требование» и «Неуказанный один и тот же сайт обрабатывается какSameSite=Lax
«, см. Ссылки для получения дополнительной информации там.
Комментарии:
1. спасибо вам за ваш хорошо продуманный ответ. К 1. : Да, я видел эту ссылку, спасибо, что добавили ее сюда. 2.: Я не думаю, что это вариант, насколько я помню, мне нужно было перейти с http на https, чтобы в первую очередь сделать возможной аутентификацию файлов cookie с помощью корзин. 3. Я нахожусь на нем и добавляю эту информацию в свои файлы cookie, SameSite еще не был настроен. Что вы имеете в виду, установив значение SameSite и SameSite равным None, поскольку это один и тот же ключ. Также есть ошибка формата в 2. в «Безопасный», на что вы хотите, чтобы я установил Безопасный? Спасибо за это сейчас.
2. «Что вы имеете в виду, установив для SameSite и SameSite значение» Нет»», — крикнул я
SameSite=Strict
иSameSite=Lax
имел в виду, что любые файлы cookie с любым значением атрибута должны быть изменены на «естьSameSite=None; Secure
«. «SameSite еще не был установлен» В этом случае ваши файлы cookie обрабатывались так, как если бы они были установленыSameSite=Lax
. Смотрите здесь , если вы не знакомы с SameSite. «Также есть ошибка формата в 2. в «Безопасный», на что вы хотите, чтобы я установил безопасный?» Вам не нужно указывать значениеSecure
, вам просто нужно включить атрибут.3. Странно, как только я изменю код, чтобы изменить файлы cookie. Он больше не устанавливает файл cookie. Мой код выглядит следующим образом.
resp = Response({}, status=status.HTTP_201_CREATED, headers={ 'Access-Control-Expose-Headers': '*', 'Set-Cookie': 'Cloud-CDN-Cookie=' cookie '; Domain=domain.com; Path=/; Expires=' formatted_date '; SameSite=None; Secure', })
еще раз спасибо вам за вашу помощь4. Разработчики Chrome расскажут вам, почему файл cookie был отклонен, поэтому я рекомендую проверить его там. Однако, если бы мне пришлось угадывать, я бы заподозрил, что новое использование
Secure
вызывает проблему; соединение, которое пытается установить файл cookie, должно быть безопасным (https) или с локального хоста.5. Я проверял это дальше, и да, как только я установил его таким образом, он говорит: Этот файл cookie был заблокирован, потому что он имел атрибут «Безопасный», но не был получен по защищенному соединению. Хм, так что, похоже, 3 не работает. До 4. Я уже пробовал это сделать перед публикацией здесь, но, похоже, это не возымело никакого эффекта.