2012-01-10 7 views
1

私はサファリ拡張機能の新機能です。私はウェブサイトに固有のブラウザクッキーにアクセスする必要があります。私はこれがクロムの拡張開発で可能であることを知っています。どのようにサファリ拡張の開発でこれを行うことができます。サファリ拡張子のブラウザクッキーを読む

+1

これを実行する方法がある場合、Appleは言わない。 – canisbos

答えて

3

挿入されたスクリプトから、拡張子にクッキーを送信できます。ですから、拡張機能をビルドするときは、global.htmlとinject.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); 

上記のコードは、拡張機能には、ページをロードするたびに、すべてのCookieを送信します。それからもちろん、あなたはまだクッキーを読む必要があります。私は次のような関数を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を使ってCookieヘッダーを送信できるようには見えません。 – David

+0

このリクエストを行っている場所によって異なります。あなたは、注入されたスクリプトからXHRを実行するだけで、そのドメイン上のXHR(注入されたスクリプトが存在する)が許可されます。しかし、global.htmlから正しく覚えていれば、どのリソースにでもリクエストを送信できます。ほとんどの場合、現在のページHREFを任意のページから外部サーバーに送信しなければならなかったときに、ブックマークを作成していたからです。 –

関連する問題