Получить куки с другого пути - PullRequest
11 голосов
/ 03 июня 2009

URL моего текущего документа http: //127.0.0.1/foo, и мне нужно изменить значение файла cookie для http: //127.0.0.1/bar. document.cookie пуст, потому что URL документа - foo. На данный момент я просто хочу прочитать значение cookie. Любая подсказка?

Ответы [ 4 ]

19 голосов
/ 03 июня 2009

Когда вы создаете куки, если вы установите путь к '/' вместо 'foo', вы сможете прочитать его в любом месте домена, включая '/ foo', '/ bar' и т. Д.

13 голосов
/ 28 июня 2012

Вы можете создать <iframe>, указывающий на ресурс внутри /bar, и добавить к нему рамочный скрипт. например:

<iframe src="/bar/blank.html" id="barframe"></iframe>

var barframe= document.getElementById('barframe');
var bardocument= 'contentDocument' in barframe? barframe.contentDocument : barframe.contentWindow.document; // IE compat
alert(bardocument.cookie);

Cookie path= - это удобная мера для предотвращения случайного столкновения имен файлов cookie. Учитывая, что разные пути имеют общий источник JavaScript, это не эффективный механизм безопасности.

3 голосов
/ 04 июня 2009

Как уже упоминали JJ и grawity, вы не можете сделать это со своей страницы. Тем не менее, у вас есть обходной путь.

я. Поместите iframe, который указывает на http://localhost/bar.. У вас есть скрытый элемент на странице "bar", где вы сохраняете значение cookie. (пусть этот iframe будет размером 1 * 1, чтобы он не был виден).

II. Используйте JavaScript на странице "foo", чтобы получить значение cookie.

Аналогичный подход (с изменениями) можно использовать и для записи значения cookie!

Спасибо

Ramjee.

3 голосов
/ 03 июня 2009

Вы не можете получить доступ к файлам cookie с другого пути, иначе это будет дыра в безопасности.

Единственный способ, с помощью которого я могу придумать, - это /bar установить cookie, чей path=/, чтобы все страницы в / (включая /foo) могли иметь к нему доступ.

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