2015-12-29 15 views
5

Próbuję zaimplementować Disqus na dokumencie wzmacniacza. Moim pomysłem jest użycie amp-iframe , który ładuje mały dokument, który zawiera tylko Disqus. Użyłem tego wzmacniacza ramkęDisqus na stronie wzmacniacza wewnątrz amp-iframe

<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> 

Jednak chrom rzuca naruszenie zasad bezpieczeństwa Treść:

Odmówił załadować skrypt „https://a.disquscdn.com/next/embed/lounge.load.f3e1717b71e7256da258d3a504e56865.js” ponieważ narusza następującą dyrektywę Polityka Bezpieczeństwa utworu: " 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 'niebezpieczne-eval' https://mobile.adnxs.com/mobhttps://ssl.google-analytics.com ".

Więc w zasadzie, chrome nie ładuje https://a.disquscdn.com/next/embed/lounge.load.f3e1717b71e7256da258d3a504e56865.js chociaż a.disquscdn.com jest dozwolone. To ograniczenie pochodzi z iframe disqus. Nie stanowi to problemu, gdy używam natywnego piaskownicy zamiast <amp-iframe>.

Chciałbym stworzyć przykład, ale ze względu na konstrukcję iframe nie mogę po prostu stworzyć jsfiddle.

Odpowiedz

6

Wydaje się wystąpienie tego błędu: https://code.google.com/p/chromium/issues/detail?id=541221

samo ma zdarzyć ze standardowym iframe jeśli przy użyciu atrybutu piaskownicy.

Dodaje się allow-same-origin do definicji piaskownicy, wydaje się, że to naprawiono. Zauważyłem, że teraz jest tak samo w Firefoksie pomimo komentarza w tym błędzie (chociaż Firefox nie podaje tego błędu w sposób jawny), że działa tam. Więc może tak to ma działać? Nie mogę powiedzieć, że wiem wystarczająco dużo o atrybucie piaskownicy, aby ci to powiedzieć.

Jednak, na marginesie, nie jestem pewien, czy to świetny pomysł. Czy będziesz mieć wersję strony spoza AMP? Osobiście nie widzę przypadku dla strony AMP, ponieważ myślę, że to ogranicza was od 1) nie wszystko jest możliwe w AMP i 2) niektórzy klienci nie ładują tego (np. Jeśli nie ma javascriptu lub nie rozumie AMP), więc wolę mieć prawdziwą stronę HTML. Jeśli jednak masz osobne strony HTML i AMP, będą one śledzić komentarze osobno (chyba że załadujesz swoją stronę spoza AMP do tego elementu iframe i jakoś ukryjesz wszystko oprócz komentarzy - ale to wydaje się kompletne marnotrawstwo!).

Tak więc obecnie zaimplementowałem to, aby dodać link "kliknij tutaj, aby wyświetlić komentarze" do moich stron AMP, które prowadzą do pełnej strony - z komentarzami. Nie jest to świetne rozwiązanie, ale przynajmniej utrzymuje razem komentarze.

+1

Dyskusja oczekuje parametru z adresem strony, więc różne sekcje komentarzy nie stanowią problemu. Tak, próbuję również kompletnej strony wzmacniacza, aby przetestować. Spróbuję dodać ten atrybut piaskownicy później, ale ostatnim razem, gdy go wypróbowałem, nic nie zrobiłem. Dodałem również atrybut piaskownicy do normalnego elementu iframe i to zadziałało (ale możliwe, że coś tam zrobiłem źle.) – Nemo64

+1

'allow-same-origin' działa, ale amp-iframe ma jedno ograniczenie:" Nie mogą one znajdować się w tym samym źródle co kontener, chyba że nie zezwalają na zezwolenie na to samo źródło w atrybucie sandbox. ". Naprawdę nie rozumiem, dlaczego to ograniczenie istnieje, ale jeśli używam innej domeny, niż wszystko jest w porządku. – Nemo64

+0

Tak, też tego nie rozumiem. Chyba chcą, żebyś nie używał tego jako pracy do udawania, że ​​jest dokumentem AMP, kiedy nie jest. Również mylące sformułowanie "nie używaj tego samego pochodzenia, chyba że nie zostało ustawione zezwolenie na to samo źródło"?!? Interesująca sugestia dotycząca przekazania prawidłowego adresu URL do Disqus. Muszę zajrzeć do tego bardziej, ponieważ obecnie używam domyślnych ustawień, które pobierają z adresu URL strony. Być może uda się to zrobić na dokumencie AMP ... –

Powiązane problemy