2017-03-25 3 views
2

以下のスニペットは、すべてのブラウザでhttp://www.google.com/support/bin/answer.py?hl=ja&content=B&contact= を実行しても問題ありませんが、Safariでhttpsでこれを実行すると動作しません。
それは私が、私はこれはサンドボックスの制限ではなく、右のCSPコンテキストで解決することができcontent security policySafariの安全なサンドボックス化されたiframeにBLOBを読み込みますか?

ではありません推測しているHTTP & httpsの...

<iframe sandbox="allow-scripts" srcdoc=" 
    <script> 
    var blob = new Blob(['abc']); 
    var fr = new FileReader(); 
    fr.readAsText(blob); 
    fr.onerror =() => document.body.innerText = 'fail' 
    fr.onload =() => document.body.innerText = fr.result 
    </script> 
"></iframe> 

両方とChromeで正常に動作します「だからここ

<meta http-equiv='Content-Security-Policy' content=' <duno> '> 

...ので、私は、ヘッダー でそれを解決することはできませんが、メタタグでも正常に動作し、静的なページでこれをホスティングmは私の質問です:私は順序で使用するためにどのようなCSP必要がありますかにiframe内のブロブを読み取ることができますか?

また、私はあなたがすでにどこか別の場所から適用されるCSPポリシーによって作成された何よりもリベラルな政策を作るためにCSPディレクティブを使用することはできませんだと思う。この

答えて

2

ためfiddleを作成しました。たとえば、文書内でmetaを使用して指定されたよりリベラルなポリシーで、より厳密なCSPヘッダーを上書きすることはできません。

the stuff about multiple policies in the CSP specを参照してください:

影響が施行するポリシーのリストに追加のポリシーを追加することが唯一の更なる保護されたリソースの能力を制限することができるということです。あなたがして、独自の制限CSPのポリシーを適用するブラウザとしてそれを考慮した場合、CSPは、このブロブと-はiframeサンドボックス・許可・スクリプトの場合にも全く関連性がある度にそう

デフォルトでは、制限を緩和するためにCSPヘッダーまたはmeta要素を使用することはできません。代わりにヘッダーまたはmeta要素を使用してさらに制限を適用できます。

とにかく、あなたが何を返信するのを見ることに興味があるのはhttps://bugs.webkit.org/show_bug.cgi?id=170075です。

+0

あなたの答えをお寄せいただきありがとうございます - 有用な情報ですが、FileReaderの問題を解決していないので+1します。あなたが私のバグ報告を見つけたのを見て幸せになりました:) – Endless

+0

乾杯 - Safariがここで何をしているかをサポートするスペック要件を見つけることができません。あなたが調査し、それを修正するか、少なくとも彼らがそれをやっている理由を説明するように、バグを提出したのは良いことだと思います – sideshowbarker

関連する問題