Safari не отправляет файлы cookie XMLHTTPRequest случайным образом - PullRequest
0 голосов
/ 29 октября 2019

У меня есть сервер Express, использующий аутентификацию PassportJS. Я использую стандартные запросы XMLHTTP для получения файлов.

Chrome и Firefox работают без проблем. Safari (Mac и iOS) не может отправить cookie-запрос с некоторыми запросами и делает это непоследовательно.

Все зарегистрированные неудачные запросы имеют другой идентификатор сеанса, который не аутентифицирован с помощью PassportJS.

Chrome и Firefox имеют единый идентификатор сеанса для всех запросов.

Я не использую запросы из разных источников, все они из одного источника. Я попытался использовать withCredentials true с тем же результатом, но это свойство не должно быть необходимо, так как оно того же происхождения и Chrome и Firefox работают без него.

Кажется, что нет шаблона для файловне удалось отправить запрос cookie. Иногда наугад (но редко) все запросы загружаются нормально.

Это не последовательный сбой, большинство запросов начинаются успешно, а затем происходит сбой с некоторыми успехами между ними.

ЭкспрессСервер не уничтожает сессии, они продолжают накапливаться. Неудачные запросы имеют идентификаторы сеансов, которые не являются аутентифицированными сеансами.

Что может заставить Safari случайным образом не отправлять cookie-запрос для некоторых запросов XMLHTTP?

1 Ответ

0 голосов
/ 05 ноября 2019

Оказалось, что это свойство crossOrigin. Должно быть, я выполнял перекрестные запросы:

https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes

В большинстве загруженных файлов свойство crossOrigin было установлено как «анонимное». ». По какой-то причине Chrome и Firefox, похоже, игнорировали это и в любом случае отправляли учетные данные cookie, а Safari - нет. Установка этого свойства в «use-credentials» работала нормально:

img.crossOrigin = "use-credentials";

...