Сценарий, который запускается на веб-странице, ограничен доступом к информации, связанной с собственным происхождением страницы (домен, схема и порт). Из соображений безопасности мы не хотим, чтобы некоторые arbitrarysite.foo
могли знать какую-либо информацию о cookie-файлах пользователя, например, gmail.com
. Информация о файлах cookie gmail.com
подпадает под исключительную компетенцию скриптов, работающих на gmail.com
. (Могут быть исключения, сделанные в обоих направлениях для каждого cookie-файла - cookie-файл может быть специально помечен для сторонней видимости или может быть помечен как невидимый для сценариев вообще, но исключительность для каждого источника является общейТаким образом, скрипт, работающий на обычной веб-странице в пределах определенного источника, не может агрегировать информацию о файлах cookie для всех источников.
Действительно, лучше всего написать расширение для браузера. В отличие от веб-страниц, расширениям могут быть предоставлены особые разрешения, поскольку пользователи активно разрешают их устанавливать и предварительно предоставляют им разрешения. API расширения cookies.getAll()
кажется подходящим для ваших нужд. Если вы не предоставите никаких фильтров, похоже, что будут собраны все доступные файлы cookie. Однако MDN отмечает существенное поведенческое различие для Edge:
Если URL-адрес не указан, файлы cookie извлекаются только для URL-адресов в открытых на данный момент вкладках. В Chrome он получает все файлы cookie на компьютере пользователя.
Учитывая, что другие браузеры (Firefox, Opera) не содержат аналогичные заметки, я предполагаю, что они также получают все файлы cookie, например Chrome.