Доступ к файлам cookie, установленным на поддомене, от родительского

1

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

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

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

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

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

<script src="/script.js"></script>

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

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

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

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

Теги:
security
cookies
http

1 ответ

2
Лучший ответ

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

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

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

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

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

Вы также можете:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню