Заголовки файлов cookie присутствуют, но файлы cookie не сохраняются в браузере - PullRequest
0 голосов
/ 19 января 2020

Пожалуйста, помогите мне выяснить, почему браузер (Chrome и любые другие) не устанавливает куки, в то время как заголовок Set-Cook ie присутствует в заголовках ответа:

Access-Control-Allow-Origin: *
Connection: keep-alive
Content-Length: 345
Content-Type: application/json; charset=utf-8
Date: Sat, 18 Jan 2020 21:15:53 GMT
ETag: W/"159-UXuykOchcveuYBb7xZpN5Luf3jU"
Set-Cookie: jwt=************; Path=/; Expires=Fri, 17 Apr 2020 21:15:53 GMT; HttpOnly
Strict-Transport-Security: max-age=15552000; includeSubDomains
X-Content-Type-Options: nosniff
X-DNS-Prefetch-Control: off
X-Download-Options: noopen
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block

Мое приложение работает в: http://localhost: 8080

1 Ответ

0 голосов
/ 19 января 2020

Вы, кажется, используете CORS.

Чтобы установить повара ie с CORS, вам необходимо установить флаг withCredentials при выполнении запроса.

https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials

Сервер должен вернуть заголовок Access-Control-Allow-Credentials: true. Вам также необходимо изменить Access-Control-Allow-Origin: *, поскольку вы не можете использовать подстановочные знаки для запроса, который использует учетные данные.

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin

Начиная с Chrome 80, вам также необходимо установить директивы SameSite=None и Secure для повара ie.

https://www.chromestatus.com/feature/5088147346030592
https://www.chromestatus.com/feature/5633521622188032
https://www.troyhunt.com/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy/

Чтобы проверить, установлен ли повар ie, вы не можете просто открыть Приложение> Печенье для проверки на повара ie. Повар ie будет установлен на localhost:3000, поэтому, глядя на печенье для localhost:8080, вы не увидите его. Вместо этого вам нужно открыть другую вкладку, которая указывает на localhost:3000, а затем посмотреть на Приложение> Cookies там. Файлы cookie распределяются между вкладками, поэтому вы по-прежнему сможете просматривать файлы cookie, установленные на исходной вкладке localhost:8080.

Получение кросс-файлов cookie для работы с Safari - отдельная борьба. Если вам нужна поддержка Safari, я предлагаю вам изучить это, так как вам может потребоваться принять совершенно другую стратегию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...