6

iframeを使用して別のドメインに値を保存しようとしています(実際には、http://xauth.org/info/のxauthライブラリを使用しています。しかし、Chromeを使用して何かを保存しようとすると、「QUOTA_EXCEEDED_ERR:DOM Exception 22」が返され、アクセスエラーとして認識されるようになりました。効果を再現するために、以下の非常に単純なページをいくつかモックアップしました。

ファイル1.html:

<html>
<head/>
<iframe src='http://127.0.0.1/2.html' />
</html>

ファイル2.html:

<html>
<head/>
<script>
console.log(localStorage);
localStorage.setItem('test', '123');
</script>
</html>

これらの両方をローカルサーバーに配置してlocalhost/1.htmlにアクセスすると、127.0.0.1(Chromeは別のドメインと見なします)のフレームが埋め込まれ、上記と同じアクセスエラーが発生します。推測では、別のドメインからiframeを埋め込んでいて、そのiframe内のスクリプトが、そのドメインのlocalStorageを適切に参照しているように見えます(console.log(localStorage)行で確認できます)。 localStorageへの書き込みは、トップページのドメインから取得されます。

つまり、ChromeのlocalStorageにiframeが書き込めないようです。この特定のセキュリティ「機能」を回避する方法があるかどうか誰かが知っていますか?それとも私は何か間違ったことをしていますか?

4

3 に答える 3

1

まあ、localStorageドメインベースであり、サンプルコードが失敗する理由はありません. 実際に行うことは、test項目を127.0.0.1の123localStorageに設定することですが、localhost は空のままにします。

これは QUOTA_EXCEEDED_ERR の最初の問題に対する答えではないかもしれませんが、Chrome でプライベート ブラウジング (Ctrl+Shift+N) に切り替えて、まだエラーがあるかどうかを確認してください。あなたが最初に何をしていたかについての詳細な情報がなければ、私は多くを語ることはできませんが、クォータを超えたということは、それが何を意味するのかを意味していると思います...

また、localStorage クォータが 5 MB の FF とは異なり、Chrome のクォータは 2.5 MB だと思います。

于 2012-05-25T23:08:02.097 に答える