Я новичок в разработке расширений сафари. Мне нужно получить доступ к куки-файлам браузера, определенным на веб-сайте. Я знаю, что это возможно с развитием расширения хрома. Как это сделать с развитием расширения сафари.Чтение браузера cookie в расширении сафари
ответ
Из введенного сценария вы можете отправить файлы cookie на расширение. Поэтому при создании расширения у вас есть global.html и injected.js.
injected.js:
var cookies = document.cookie;
safari.self.tab.dispatchMessage("setCookies",cookies);
global.html (без HTML-тегов):
var cookies = null;
function getCookies(incMsg) {
cookies = incMsg.message;
alert('I received them :) \n\n'+cookies);
}
safari.application.addEventListener("message",getCookies,false);
Код выше будет отправлять все куки на продление каждый раз при загрузке страницы. Тогда, конечно, вам все равно нужно прочитать куки. Я использовал что-то вроде следующей функции (в global.html):
function readCookie(name) {
if(cookies) {
var nameEQ = name + "=";
var ca = cookies.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
}
Удачи вам!
Btw Я нашел это в Руководстве по разработке расширений Safari: http://developer.apple.com/library/safari/#documentation/Tools/Conceptual/SafariExtensionGuide/MessagesandProxies/MessagesandProxies.html –
Спасибо, это полезно знать. Я предполагаю, что этот метод также будет извлекать файлы cookie любого документа из расширения панели инструментов (который загружает HTML, который включает в себя элементы и AJAX, где заголовок ответа загруженных элементов страницы и XmlHttpRequest могут содержать Set-Cookie для cookie сеанса). К сожалению, не похоже, что Safari позволяет отправлять заголовок cookie с помощью XmlHttpRequest для расширений панели инструментов. – David
Зависит от того, где вы делаете этот запрос. Из XHR вы делаете XHR из вложенного скрипта, он разрешает XHR только в этом домене (где находится внедренный скрипт). Но если я правильно помню из global.html, вы можете отправлять запросы на любой ресурс. Скорее всего, потому, что я создавал закладок в то время, которые должны были отправить текущую страницу HREF на внешний сервер с любой страницы. –
Если есть способ сделать это, Apple не говорит. – canisbos