2010-06-02 1 views
28

Использование Javascript Я хотел бы получить значение domain для определенного файла cookie.Как получить значение домена для cookie в Javascript?

Возможно ли это? Если да, то как?

Чтобы уточнить: Я не ищу значение из файла cookie. Я нахожусь на «subdomain.domain.com», и мне нужно удалить файл cookie, чье имя известно, но его значение в домене - что-то вроде «.domain.com». Короче: я хотел бы получить значение «.domain.com».

+1

Единственный способ узнать атрибуты cookie (путь, домен, срок действия, безопасность) - это привязать их к значению при создании или изменении файла cookie или его значения. – kennebec

ответ

35

Извините, все, что вы получаете, это то, что вы видите в document.cookie. Метаданные cookie, такие как path, domain и expires, не отображаются в коде сайта (ни на JavaScript, ни на сервер).

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

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

document.cookie= 'foo=;domain=sub.domain.example.com;expires=Sat, 01-Jan-2000 00:00:00 GMT'; 
    document.cookie= 'foo=;domain=domain.example.com;expires=Sat, 01-Jan-2000 00:00:00 GMT'; 
    document.cookie= 'foo=;domain=example.com;expires=Sat, 01-Jan-2000 00:00:00 GMT'; 

и аналогично с переменная path. Вы можете поместить это в вложенный цикл для каждой части пути и домена, разделив на . для домена и / для пути.

+3

Итак, в основном вы рекомендуете бомбардировки ковровых покрытий. Я тоже не вижу другого решения. :) – Wabbitseason

+0

Да, это хороший способ описать это! – bobince

+0

Как это работает утилита веб-разработчиков Firefox View View? По-видимому, информация о домене находится где-то там. – TARKUS

2

Доступ к файлам cookie доступны из этого же домена (включая субдомены). Очевидно, что иначе было бы проблемой безопасности.

+1

Я думаю, что это не совсем так. субдомены могут устанавливать файлы cookie для *. как я понимаю: https://serverfault.com/questions/153409/can-subdomain-example-com-set-a-cookie-that-can-be-read-by-example-com – hwjp

+1

Исправить: одна из вещей, которые куки могут сделать, что localStorage не может: вы можете установить ее в основном домене. Программно определить, какой домен «toplevel», который вы можете установить, может быть сложным, хотя: вы можете установить cookie на amazon.com, но не co.uk как co это специальный SLD. Вместо этого вы должны установить его на amazon.co.uk. Так что это не так просто, как «только два последних сегмента». – Dtipson

Смежные вопросы