2012-01-10 5 views
1

사파리 확장 기능을 처음 사용했습니다. 웹 사이트와 관련된 브라우저 쿠키에 액세스해야합니다. 크롬 확장 개발에서 이것이 가능하다는 것을 알고 있습니다. 사파리 확장 개발로 어떻게이 작업을 수행 할 수 있습니다.사파리 확장 기능의 브라우저 쿠키 읽기

+1

이렇게하는 방법이 있다면, 애플은 말하지 않고있다. – canisbos

답변

3

삽입 된 스크립트에서 쿠키를 내선 번호로 보낼 수 있습니다. 따라서 확장 기능을 빌드 할 때는 global.html과 injected.js가 있어야합니다.

injected.js : (HTML 태그없이)

var cookies = document.cookie; 
safari.self.tab.dispatchMessage("setCookies",cookies); 

global.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; 
    } 
} 

행운을 빌어 요!

+1

Btw Safari Extensions 개발 가이드 : http://developer.apple.com/library/safari/#documentation/Tools/Conceptual/SafariExtensionGuide/MessagesandProxies/MessagesandProxies.html –

+0

감사합니다. 알고 계시다면 도움이됩니다. 이 기술은 도구 모음 확장 (페이지 요소의 응답 헤더와 XmlHttpRequest가 세션 쿠키에 대해 Set-Cookie를 포함 할 수있는 요소와 AJAX를 포함하는 HTML을로드하는)에서 문서 쿠키를 가져 오는 것으로 가정합니다. 안타깝게도 Safari는 툴바 확장을 위해 XmlHttpRequest를 사용하여 쿠키 헤더를 보낼 수 있습니다. – David

+0

이 요청을 처리하는 위치에 따라 다릅니다. 당신이 주입 된 스크립트에서 XHR을 수행한다면, XHR은 해당 도메인 (주입 된 스크립트가있는 곳)에서만 허용됩니다. 그러나 global.html에서 올바르게 기억한다면 요청에 따라 리소스를 보낼 수 있습니다. 대부분의 경우, 현재 페이지를 HREF를 외부 페이지로 보내야만했던 북마크러를 그 당시 만들었 기 때문에 가장 확실합니다. –