2012/6/2 土曜日

[chrome extension]クロスドメインアクセス時にcookieを制御する

Filed under: HP関係,javascript,ニコニコ動画 — GRN @ 0:24:48  

chrome extensionで動くニコ生アラートである、ニコ補助-生を作っていますが、

今回、zeroになったことによって、ニコニコ動画のコミュニティページのアクセス制御がかかるようになりました。

そのため、現状では、アクセス制御に阻まれて、監視できるコミュニティが10個ほどぐらいで精一杯になりました。

そこで、[chrome extension]クロスドメインアクセス時にcookieを制御する方法を検討してみた。

    現在、chrome extensionでバックグランドページからxmlhttpでクロスドメインにアクセスする場合、

    現状だと、勝手にCookieデータを付加して送ってしまいます。

    普通だと、xmlhttp送信時にヘッダを変換して、遅れますが、chromeの仕様でできないようになっています。

      今年になって、webrequestってものがchromeAPIに使えるようになりました。

      これで、簡単にcookieを制御できると思いきや、できるのは指定したドメインを見ている時だけ、

      chrome extensionでは、相変わらず使うことができない。

      これで、できると思ったが、できない時の絶望感・・・・

      以上を踏まえて、無理やりchrome extensionでcokkieを制御する方法

      cookieAPIを使って対処する

      chromeにはcookieを扱うAPIがあり、それを使って、

      • 現状のcookieを保存
      • APIで好きなようにCookieを削除・変更する
      • AJAX通信
      • 通信が終わったら、元の保存していた、cookieに戻す

      以上の手順を踏めば可能です。ただし、extensionが裏でAJAX通信中にブラウザでそのサイトを観覧していた場合、

      通信タイミングが合ってしまうと、そのあおりをくらい、意図しないページが表示される可能性がある。

      webrequestとtab 1つを使って対処する

      現状では、webrequestを使うことはできるが、指定した対象のページのみで、extensionのバックグランドからは使えない

      そのため、webrequestで使いたいドメインのタブを1つ作って対処を行う

      • webrequestで使いたいドメインのタブを1つ作る
      • そのtabページと、バックグランドページをPORTで繋ぐ
      • バックグランドから、PORTを使ってタブでURLを送る
      • tabからAJAXで通信を行う
      • AJAXで得たデータをPORTでバックグランドへ送る

      これを行うことで無理やりですが、webrequestでcookieの制御が行えます。

      その他には

      NPAPIを使う

      そのまま

      flash(xmlsocket)を使う

      flashを使う場合は、初期設定として、対象のextensionを例外として設定をしてもらう必要がある。

      あとは、flashとjavascriptの連携でどうにかなる

      以上!!

      ニコ補助 - 生では、

      • webrequestとtab 1つを使って対処する
      • flash(xmlsocket)を使う

      のどちらかで対処予定です

      —————————-

      追記 2012/06/05

      flashでも、chromeの仕様上、無理な模様。

      URLLoaderで通信しようとすると、勝手にcookie設定しちゃうし、

      cookieを設定しようとすると、そこでエラーがでて止まってしまいます。

      現状だと、tab経由しか、対処しようがなさそうですね。


      TrackBack URI :

        【関連記事】
          None Found

      コメントはまだありません »

      コメントする

      • ブログSEO対策 : track word 
      • SEO 
      •  
      •  
      •  
      RSS feed meter for http://blog.guron.net  
      35 queries. HTML convert time: 0.202 sec. © 2004-2007 GRN All rights reserved