Local Storageのクロスドメイン問題

はじめに

前回のエントリで書いたChromeアドオンの実装で詰まった部分があるのでそれをメモ的に。


デジコレエクステンション with Taggy Bank - Katachi

技術的課題

今回、CiNii Books, NDL Search, Worldcatで件名標目を収集し、どのサイトにいてもその収集したタグを参照することができる仕組みが求められました。LocalStorageをとりあえず使ってみようかと思ったのですが、LocalStorageはシングルドメインでのみ利用可能である、というクロスドメイン問題が発生します。つまり

  • CiNii Booksで収集した件名標目はCiNii Booksドメインでのみ参照可能
  • NDL Searchで収集した件名標目はCiNii Books側で収集した件名標目ともマージできない
  • 収集した件名標目はそれぞれ収集したドメイン内でしか活用できない

という問題があります。いろんなウェブサイトから件名標目を収集していろんなサイトで活用するための仕組みとしては、ここをクリアする必要がありました。

Background.js

自分がとった方法はBackground.jsからLocalStorageを参照する方法です。

f:id:haseharu:20150306233640p:plain

Background.jsからLocalStorageを参照すると、上記のように、ローカルファイルをドメインとしてデータを記録します。参照されているローカルファイルはChrome拡張機能の保存されているローカルファイルです。つまり、どのサイトにアクセスしても、同一のドメインとして同一のLocalStorageに保存し参照することができます。

セキュリティ的にどうなのか、とかいろいろ検証が必要とは思いますが、とりあえずこんな方法もあるということで。