AJAX с учетными данными, не передавающими файлы cookie в Safari - PullRequest
0 голосов
/ 17 января 2019

У меня есть одностраничное статическое приложение, размещенное на example.com. Мой сервер для приложения размещен на server.com. Я держу эти две службы совершенно отдельно, и таким образом они могут масштабироваться по-разному. Когда пользователь хочет войти в систему, его имя пользователя и пароль передаются на yoyoma.com, и на server.com устанавливается cookie с access_token. Затем пользователь перенаправляется на example.com и теперь входит в систему.

Из статического приложения на example.com теперь мы можем отправлять запросы AJAX на server.com с параметром withCredentials = true, чтобы заданный нами access_token передавался на server.com. Это прекрасно работает в любом браузере, кроме Safari. Единственный способ заставить Safari работать, это перейти в настройки -> конфиденциальность -> отключить «Запретить межсайтовое отслеживание». Я знаю, что куки устанавливаются на server.com, но они не передаются с помощью запроса AJAX. Кажется, это какая-то функция конфиденциальности, которая, по мнению Apple, просто замечательна, но как решить эту проблему? Я не рекламный сервис, я не делаю ничего плохого, просто пытаюсь заставить свое приложение работать. Я специально хочу создать одностраничное приложение, где сервер находится в другом домене. Возможно ли это в Safari или их настройки конфиденциальности сделали это невозможным?

Примечание: я должен также упомянуть фанатам безопасности, что когда установлен cookie access_token, пользователь перенаправляется на example.com с токеном CSRF. Этот токен csrf передается в каждом AJAX-запросе заголовком для предотвращения подделки межсайтовых запросов.

...