2015-12-29 10 views
5

アンプのドキュメントにDisqusを実装しようとしています。私の考えは、amp-iframe を使用して、Disqusだけを含む小さな文書を読み込むことです。それは、次のコンテンツセキュリティポリシーの指示に違反しているため、スクリプト 「https://a.disquscdn.com/next/embed/lounge.load.f3e1717b71e7256da258d3a504e56865.js」 をロードするために拒否アンプのiframe内のアンプページのDisqus

: 「私はこのアンプ枠しかし

<amp-iframe width="300" height="300" 
      layout="responsive" 
      sandbox="allow-forms allow-modals allow-popups allow-popups-to-escape-sandbox allow-scripts" 
      resizable 
      frameborder="0" 
      seamless 
      src="/disquss/name-of-blog-post"> 
    <div overflow tabindex=0 role=button aria-label="Read more">more!</div> 
</amp-iframe> 

を使用し、クロムは、コンテンツセキュリティポリシー違反をスローしますスクリプト-SRCます。https:// .twitter.com: https://api.adsnative.com/v1/ad.json * .adsafeprotected.com https://cas.criteo.com/delivery/0.1/napi.jsonp.services.disqus.com: http://referrer.disqus.com/juggler/ disqus.comます。http:// .twitter.com: a.disquscdn.com https://referrer.disqus.com/juggler/ ます。https:// .services.disqus.com: * .moatads.com '安全ではない-evalの' https://mobile.adnxs.com/mobhttps://ssl.google-analytics.com "となります。

a.disquscdn.comが許可されていても基本的にクロムにはhttps://a.disquscdn.com/next/embed/lounge.load.f3e1717b71e7256da258d3a504e56865.jsがロードされません。この制限は、iframe disqusの使用に起因します。 <amp-iframe>の代わりにネイティブサンドボックスを使用すると、問題はありません。

私は例を作成したいと思っていましたが、iframeの構造のために単純にjsfiddleを作成することはできません。

答えて

6

このバグのインスタンスであるように思われる: https://code.google.com/p/chromium/issues/detail?id=541221

sandbox属性を使用している場合、同じことがは、標準のiframeで起こりありません。

allow-same-originをサンドボックス定義に追加すると修正されたようです。私はそれがそのバグのコメントにもかかわらず(Firefoxは明示的にエラーをリストしていませんが)それがそこで動作することに気づきました。だから、これはどうやって動作するのだろう?あなたにそれを伝えるためにサンドボックス属性について十分に知っているとは言えません。

ただし、これはとにかく素晴らしいアイデアだとは思いません。あなたはこのページの非AMP版を持っていますか?個人的にはAMPのみのページのケースは表示されません。これは、1)AMPですべてが可能ではなく、2)一部のクライアントがこれをロードしない(JavaScriptがない場合やAMPを理解しないなどの理由で) )、私は本当のHTMLページを持っていることを好みます。しかし、別のHTMLページとAMPページを持っていれば、別々にコメントを追跡します(このiframeに非AMPページを読み込んでコメント以外のものを何らかの形で隠すのでない限り、それは完全に無駄に見えます)。

私が現在実装しているのは、「コメントを見るにはここをクリックしてください」というリンクを私のAMPページに追加することです。素晴らしい解決策ではありませんが、少なくともコメントをまとめています。

+1

ディスカッションでは、ページURLを持つパラメータが必要になるため、異なるコメントセクションが問題になることはありません。また、はい、テストするために完全なアンプページを試してみます。あとでそのサンドボックス属性を追加しようとしますが、前回試みたときに何もしませんでした。また、通常のIframeにサンドボックス属性を追加しても問題ありませんでした(ただし、そこに何か問題があった可能性があります)。) – Nemo64

+1

'allow-same-origin'は動作しますが、amp-iframeには1つの制限があります:"サンドボックス属性でallow-same-originを許可しない限り、コンテナと同じ起点にあってはなりません。私は本当になぜこの制限があるのか​​は分かりませんが、もし私がすべてのものとは違うドメインを使っていればうまくいきます。 – Nemo64

+0

はい私はどちらもそれを得ていません。あなたは、そうでないときにAMPドキュメントであるとふるまうために、これを回避策として使用しないことを望んでいると思います。また、「同じ原点を設定することができない限り、同じ原点を使用しないでください」という混乱した言葉?正しいURLをDisqusに渡すことに関する興味深い提案。現在、ページURLから取得するデフォルトを使用しているので、それ以上のことを調べなければなりません。たぶんこれはAMPドキュメント上で動作するようになるでしょう... –