web-dev-qa-db-ja.com

iframe in Chrome error: 'window'から 'localStorage'の読み取りに失敗しました:このドキュメントのアクセスは拒否されました

LocalStorageを使用するWebアプリがあります。次に、このWebアプリをiframeを介して他の(サードパーティ)サイトに埋め込みます。他のWebサイトがWebアプリをiframeに埋め込むことができるように、youtubeと同様のiframe埋め込みを提供したいと考えています。機能的には、埋め込まれない場合と同じです。しかし、それは機能しません。 Chrome=エラーメッセージを出力します。

Uncaught SecurityError: Failed to read the 'localStorage' property from 'Window': Access is denied for this document.

私は次のチェックを行います(iframeで):

if (typeof window.localStorage !== 'undefined') {
    // SETUP SESSION, AUHT, LOCALE, SETTINGS ETC
} else {
    // PROVIDE FEEDBACK TO THE USER
}

セキュリティ設定をChrome 別のStackoverflowスレッド で説明したようにチェックしましたが、機能しません。調整することなく埋め込みを可能にする変更はありますか(デフォルト)最新のブラウザのセキュリティ設定?

より多くの情報を提供するために、WebアプリにEmber-CLIを使用してオンにしました [〜#〜] csp [〜#〜]Ember-CLI CSPの詳細情報 =)。 CSPにより、Webアプリがセキュリティエラーをスローする可能性がありますか?

21
tschoartschi

Chromeの[設定]> [プライバシー]> [コンテンツの設定]で、Cookieの設定が[サイトがデータを設定できないようにする]に設定されています

このチェックボックスが例外の原因です。

21
Paul Irish

これによる

この例外は、[サードパーティのCookieとサイトデータをブロックする]チェックボックスがコンテンツ設定で設定されている場合にスローされます。
設定を見つけるには、Chrome設定を開き、検索ボックスに「3番目」と入力し、[コンテンツ設定]ボタンをクリックして、[Cookie]の下の4番目の項目を表示します。

enter image description here

12
alessandrio

Chrome=でこれを行うより安全な方法は、信頼できるサイトのみを許可することです。

Chrome
  -> "Settings"
    -> "Show advanced settings..."
      -> "Privacy"
        -> "Content settings..."
          -> "Manage exceptions..."
            -> (add a pattern such as [*.]Microsoft.com)
            -> be sure to hit enter
            -> "Done"
          -> "Done"
4
GaTechThomas

localStorageはドメインごと、プロトコルごとです。スタンドアロンファイルからlocalStorageにアクセスしようとしている場合、つまりfile:///プロトコル、ドメイン自体はありません。そのため、現在ブラウザは、ドキュメントがlocalStorageにアクセスできないと文句を言うでしょう。ファイルをWebサーバーに配置し(Tomcatにデプロイするなど)、localhostからアクセスすると、localStorageにアクセスできます。

4
Somu

次のURL:chrome://settings/content/cookies「サードパーティのCookieをブロックする」のチェックを外します。

3
e18r

コメントで指摘されているように、localstorageは単一のOriginのみ、つまりページのOriginです。別のOriginからロードされたiframeからページのlocalstorageにアクセスしようとすると、エラーが発生します。

できることは、postMessage APIを介してXDMでハックすることです。 このライブラリ あなたのために重荷をかけることを目的としていますが、私はそれを試していません。ただし、このルートを進む前に、 IEのXDMのひどいサポート に注意してください。

2
Mike Post

この警告を取り除くには、Chromeの[設定]-> [プライバシー]-> [コンテンツの設定]で、[サードパーティのCookieとサイトデータをブロックする]オプションをオフにする必要があります

1
Picard

imhoそれはember cliアプリのCSP設定とは関係ありませんが、ブラウザー設定とは関係ありません。一部のブラウザー(Chrome)はiframeにロードされたlocalStorageコンテンツをブロックします。 Ember Appの場合、ember appとサードパーティのWebサイトにロードするプラグインがある場合、iframeにロードされたユーザートークンはChromでブロックされます、私たちはいくつかの解決策を試していますが、このスレッドがどのように進行するかについて投稿し続けます。

0
Mad Scientist