Safari не включает COOK IE для второго запроса CORS - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть интерфейс на https://somedomain.dev (angular) и API на https://api.somedomain.dev (поэтому у меня один домен, но другой поддомен - это важно, потому что для разных доменов Safari будет блокировать все печенье ). Я отправляю 3 запроса в API в следующем порядке

  • POST /api/user/login - в наборе серверов ответов HttpOnly COOK IE (с токеном авторизации: JWT
  • GET /api/user/profile - чтобы получить профиль пользователя (браузер должен добавить COOK IE для запроса)
  • GET /api/buildings - чтобы получить здания (браузер должен добавить COOK IE для запроса)

Проблема : Safari добавляет cook ie только для GET profile и НЕ добавляет cook ie к GET buildings (Chrome, Firefox и Edge добавляет COOK IE к каждому запросу GET )

Все детали запросов (заголовки и c.):

Вопрос : Почему Safari не добавляет повар ie в buildings запрос и что нужно сделать, чтобы Safari (используя javascript или код сервера) добавил ок ie ко всем запросам (после входа в систему)?

1 Ответ

1 голос
/ 23 апреля 2020

Хорошо - после долгого анализа запросов, наконец, я нашел проблему - в ответе login сервер установил в Set-Cookie заголовок время повара ie время жизни

Max-Age: 43200;

это работает на Chrome, Firefox и Edge - но НЕ в Safari (возможно, Safari рассматривает это как 1s cook ie life-time, и поэтому он добавляет cook ie только для первого запроса GET) - поэтому я изменяю его на

max-age=43200;

и теперь работает везде :) 1009 *

...