Что касается получения Cookie из моего расширения для Chrome, то оно отлично работает, когда в Chrome включена настройка «На всех сайтах».
Но когда я установил «На [текущий сайт]» или «При нажатии на расширение» в настройках расширения Chrome, я не смог получить файлы cookie.
https://support.google.com/chrome_webstore/answer/2664769?hl=ru «Разрешить расширениям читать и изменять данные сайта»
※ Когда я продолжаю открывать URL-адрес, по которому я хочу получить файл cookie, это успешно...
Пытался найти решение, но ничего не было.
{
"name": "myapp",
"version": "1.0.0",
"description": "desc",
"permissions": [
"contextMenus",
"tabs",
"cookies"
],
"host_permissions": [ "https://wanna-get-cookie-this-domain.com/*" ],
"background": { "service_worker": "service_worker.js" },
"content_scripts": [
{
"js": ["scripts/contentscript.js"],
"matches": ["https://*/*"]
}
],
"manifest_version": 3
}
service_woeker.js
chrome.contextMenus.create({
id: "testapp",
title: "title",
contexts: ["all"],
type: "normal"
});
chrome.contextMenus.onClicked.addListener(function(info, tab) {
chrome.windows.create({
url: `/views/popup.html`,
type: 'popup',
focused: true,
width: 395, height: 230
});
})
chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) {
if (request.type == "getCookie") {
chrome.cookies.getAll({}, function(cookies) {
console.info(cookies);
// "On all sites" works.
// "On [current site]" or "When you click the extension" doesn't work
// even after I clicked and enabled the extension.
});
}
return true;
});
просмотры/popup.html
<html>
...
<script src = "/scripts/popup.js"></script>
</html>
скрипты /popup.js
// After user clicked, below code
chrome.runtime.sendMessage({type: 'getCookie'}));
Спасибо,
Спасибо. Даже после того, как пользователь щелкнул и включил расширение, я не могу получить файлы cookie.
Я добавил manifest.json и свой код!
Это ошибка:
the
cookies
API is only checking the host permissions, and not checking tab-specific permissions, since the request isn't associated with a tab.
Пока это не будет исправлено, вы будете добавлять разрешения хоста для всех сайтов в manifest.json:
"host_permissions": ["<all_urls>"]
Обратите внимание, что ваш контент-скрипт уже работает на всех сайтах https (хотя почему не на всех сайтах?), а это означает, что ваше расширение уже запрашивает «широкое разрешение хоста» под капотом, поэтому добавление того же шаблона к host_permissions
не увеличивает внутренние разрешения вашего расширения, это скорее косметическое требование, позволяющее использовать chrome
API в скриптах, не связанных с контентом, таких как фоновый скрипт.
Спасибо за ваш ответ. Я понимаю. Я отказался от реализации этого.
В этом режиме доступ предоставляется только после взаимодействия пользователя с вашим расширением.