Браузер Safari с функцией предотвращения межсайтового отслеживания позволяет получить значение локального хранилища в другом поддомене - PullRequest
1 голос
/ 17 февраля 2020

Я работаю над Safari версии 13. В [Настройки> Конфиденциальность] есть опция «Запретить межсайтовое отслеживание»

Когда эта опция включена, она будет запрещать межсайтовое отслеживание в качестве своего имени. подразумевается, чтобы защитить конфиденциальность пользователя.

Однако, кажется, что локальное хранилище в разных поддоменах также не может быть общим.

Например, здесь есть два поддоменов, которые являются «auth» и «app»

auth.dev.domain.ab c -> поддомен для авторизации. app.dev.domain.ab c -> поддомен для основного приложения.

Сначала пользователь войдет в систему с именем "auth.dev.domain.ab c", как только пользователь войдет в систему. в случае успешного завершения, он установит токен в локальном хранилище и перенаправит на app.dev.domain.ab c

В случае, если «Запретить межсайтовое отслеживание» отключено

  1. Зарегистрировавшись в "auth.dev.domain.ab c", accessToken устанавливается в локальном хранилище
  2. Перенаправить на app.dev.domain.ab c
  3. в настоящее время на app.dev.domain.ab c
  4. При просмотре Local Storage в сафари с помощью [Develop> Показать веб-инспектор> Storage] В разделе Local Storage мы может см. AccessToken в auth.dev.domain.ab c

В случае, если "Запретить межсайтовое отслеживание" включено

  1. Зайдя на сайт "auth.dev.domain.ab c", accessToken устанавливается в локальном хранилище
  2. Перенаправить на app.dev.domain.ab c
  3. в настоящее время в app.dev .domain.ab c
  4. При просмотре Local Storage в сафари с помощью [Develop> Show web inspector> Storage] В разделе Local Storage мы не можем видеть accessToken в аутентификации .dev.domain.ab c

Я не знаю, как решить эту проблему, похоже, что Safari рассматривал другой поддомен как «межсайтовый»

Что лучший способ обойти эту проблему?

  1. Я пытался использовать iframe из app.dev.domain.ab c для auth.dev.domain.ab c, но это Кажется, что auth.dev.domain.ab c в iframe также не имеет значения accessToken в локальном хранилище.
  2. Должен ли я отправлять accessToken как и параметр в URL при перенаправлении из "auth.dev.domain .ab c "to" app.dev.domain.ab c "и вручную установить локальное хранилище в" app.dev.domain.ab c "?

Есть ли еще решение, которое может заставить его работать на этом?

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