Доступ к файлам cookie, установленным на поддомене, от родительского - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь получить доступ к набору файлов cookie на поддомене (small.example.org) из родительского домена (example.org), и я хотел бы сделать это с помощью небольшого количества Javascript на странице.

Прежде всего я устанавливаю куки для домена small.example.org

document.cookie = "name=Mike; domain=small.example.org"

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

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

<script src="small.example.org/script.js"></script>

Теперь, когда я загружаю example.org с запросом к тегу скрипта и заглядываю в браузер, я вижу cookie из small.example.org.

Но когда я пытаюсь получить к нему доступ из Javascript, используя document.cookie, я ничего не получаю.

Это ожидаемое поведение? Я думал, что вы не можете получить доступ к куки из Javascript, только если у них установлен флаг HTTPOnly.

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

1 Ответ

0 голосов
/ 26 апреля 2018

Это ожидаемое поведение.

JavaScript может получить доступ только к cookie, если domain файла cookie:

  • Точное совпадение с именем хоста текущей страницы
  • Подстрока имени хоста текущей страницы

example.org не может прочитать файлы cookie для small.example.org (хотя обратное неверно).

Обратите внимание, что источник для JavaScript определяется URL-адресом HTML-документа, в котором выполняется JS, а не URL-адресом, с которого был загружен JS.

Вы можете либо:

  • Измените domain, указанное при установке файла cookie
  • Динамически сгенерируйте файл JS на сервере и вставьте данные, используя программирование на стороне сервера (браузер отправит cookie в заголовке HTTP-запроса при запросе URL-адреса JS, поскольку домены совпадают).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...