задний план
Запустите интерфейсный проект локально и получите к нему доступ через локальный хост.При отправке запроса на внутренний интерфейс серверная часть не смогла получить текущий статус входа пользователя, и интерфейс возвращает информацию о незарегистрированном пользователе. .
Анализ причин
После расследования было обнаружено, что когда текущий проект отправляет запрос POST на имя междоменного домена, он не может содержать файл cookie для запроса, поэтому внутренний интерфейс не может получить статус входа текущего пользователя через печенье.
Причина в том, что после версии Chrome 80, когда сервер не указывает заголовок ответа HTTPSameSite
атрибут, политика Chrome SameSite по умолчанию — Lax, которая не может передавать файлы cookie при отправке запросов POST на междоменные доменные имена.
решение
- Версии браузера Chrome ниже 91:
URL-адрес доступа в Chromechrome://flags/#same-site-by-default-cookies
,БудуSameSite by default cookies
Установить какDisabled
Затем перезапустите браузер и запустите проект, чтобы решить эту проблему. Этот параметр обрабатывает запросы, в которых не указан атрибут SameSite, какSameSite=Lax
обрабатывать.
- Браузер Chrome версии 91 и выше: (Настройка в схеме 1 удалена Chorme после версии 91)
Windows: откройте свойства ярлыка Chrome в目标
добавлено после--disable-features=SameSiteByDefaultCookies
, нажмите «ОК», закройте все окна Chrome, включая браузер Chrome, а затем перезапустите браузер, чтобы запустить проект для решения проблемы.
Mac: В системе Mac это можно решить, открыв браузер с параметрами в командной строке, и предполагается, что все окна браузера должны быть закрыты и退出
Браузер, а затем работать.
- Откройте команду Chrome:
open -a "Google Chrome" --args --disable-features=SameSiteByDefaultCookies
- Откройте версию браузера Edge для Chromium:
open -a "Microsoft Edge" --args --disable-features=SameSiteByDefaultCookies
PS:Запустите браузер, выполнив команду в системе Mac. Если проблема по-прежнему не может быть решена, попробуйте перезапустить браузер, а затем выполнить команду, чтобы открыть браузер. Команду необходимо полностью закрыть, а затем выйти из браузера, чтобы она вступила в силу.
- Браузер Chrome версии 94 и выше
Официальный сайт проекта ChromiumУпоминается, что в версии 94 будет удален способ отключения установки значения SameSite по умолчанию через командную строку, тогда будут недоступны методы схемы 1 и схемы 2. Позже можно будет использовать прокси-инструменты или программное обеспечение, такое как nginx, для преобразования междоменных запросов в значения, отличные от значений по умолчанию.Междоменный запрос для решения проблемы.
The flags #same-site-by-default-cookies and #cookies-without-same-site-must-be-secure have been removed from chrome://flags as of Chrome 91, as the behavior is now enabled by default. In Chrome 94, the command-line flag --disable-features=SameSiteByDefaultCookies,CookiesWithoutSameSiteMustBeSecure will be removed.