我嘗試在amp文檔上實現Disqus。我的想法是使用加載僅包含Disqus的小文檔的amp-iframe 。我用這款音箱架Disqus在amp-iframe內的amp頁面上
<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>
然而,鉻拋出一個內容安全策略違規:
拒絕,因爲它違反了以下內容安全策略指令加載腳本 「https://a.disquscdn.com/next/embed/lounge.load.f3e1717b71e7256da258d3a504e56865.js」 : 「 script-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
被允許,chrome也不加載https://a.disquscdn.com/next/embed/lounge.load.f3e1717b71e7256da258d3a504e56865.js
。這種限制來自iframe disqus使用。當我使用本機沙盒而不是<amp-iframe>
時,這不是問題。
我很想創建一個例子,但由於iframe構造,我不能簡單地創建一個jsfiddle。
討論期望一個帶有頁面url的參數,因此不同的註釋部分不會成爲問題。也是的,我嘗試一個完整的功放頁面來測試。我會稍後嘗試添加沙盒屬性,但上次我嘗試了它並沒有做任何事情。我還將sandbox屬性添加到了正常的Iframe中,並且確實有效(但可能我在那裏做了錯誤。) – Nemo64
'allow-same-origin'可以工作,但amp-iframe有一個限制:「除非他們不允許在沙盒屬性中允許同源,否則它們不能與容器位於同一起源。」。我真的不明白爲什麼這個限制是存在的,但是如果我使用不同的領域而不是一切都很好。 – Nemo64
是的,我也不明白。猜猜他們希望你不要使用它作爲解決方法,假裝它不是AMP文檔。也混淆措辭「不要使用同一起源,除非允許同源未設置」?!?關於將正確的URL傳遞給Disqus的有趣建議。由於目前我使用從頁面URL獲取的默認值,因此必須更多地考慮這一點。也許將有可能得到這個AMP文件的工作... –