На сайте Jekyll, использующем Disqus, я получаю ошибку политики безопасности содержимого - PullRequest
0 голосов
/ 26 мая 2018

Я создал сайт, используя Jekyll, размещенный на Github. Страницы:

сайт , репо

Jekyll _config.yml :

    # Comments
disqus_shortname: bad3r

Настройка Disqus в _layout / post.html :

<div class="comments-wrapper">
  <div id="disqus_thread"></div>
  <script>
    /**
     *  RECOMMENDED CONFIGURATION VARIABLES: EDIT AND UNCOMMENT THE SECTION BELOW TO INSERT DYNAMIC VALUES FROM YOUR PLATFORM OR CMS.
     *  LEARN WHY DEFINING THESE VARIABLES IS IMPORTANT: https://disqus.com/admin/universalcode/#configuration-variables
     */
    var disqus_config = function() {
      this.page.url = '{{ absolute_url }}{{ page.url }}'; /*Replace PAGE_URL with your page's canonical URL variable*/
      this.page.identifier = '{{ page.url }}'; /*Replace PAGE_IDENTIFIER with your page's unique identifier variable*/
    };
    (function() { /* dont endit below this line */
      var d = document,
        s = d.createElement('script');
      /* https://bad3r.disqus.com/embed.js */
      /* 'https://{{ site.disqus_shortname }}.disqus.com/embed.js' */
      s.src = 'https://{{ site.disqus_shortname }}.disqus.com/embed.js';
      s.setAttribute('data-timestamp', +new Date());
      (d.head || d.body).appendChild(s);
    })();
  </script>
  <noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript" rel="nofollow">comments powered by Disqus.</a></noscript>
</div>
<!-- /.comments-wrapper -->

Я включил комментарии в посте Jekyll:

---
layout: post
title:  "Welcome to my new blog"
date:   2018-05-25
excerpt: "working on building my blog, here is an example post"
image: "/images/workProgress.jpg"
comments: true
---

ссылка на пост, где disque показывает сообщение об ошибке здесь, код на github здесь

если вы откроете консоль на странице, вы увидите ошибку:

Content Security Policy: The page’s settings blocked the loading of a resource at self (“script-src”). 

У меня не было политики безопасности содержимогокогда я впервые столкнулся с ошибкой, но я попытался реализовать ее, и я добавил CSP в _includes / head.html :

<!-- CSP(Content Security Policy) -->
<META HTTP-EQUIV='Content-Security-Policy' CONTENT="default-src 'self' ; script-src 'self' 'unsafe-inline' *.disqus.com a.disquscdn.com requirejs.org www.google-analytics.com; style-src 'self' 'unsafe-inline' a.disquscdn.com; img-src 'self' *; media-src 'self' ; frame-src disqus.com;">

и _includes / head.html включены в начало всех _layouts / *. Html

Понятия не имеюпочему эта ошибка все еще возникает.

1 Ответ

0 голосов
/ 17 мая 2019

Похоже, вы вводите неправильный this.page.identifier.Вот копия кода Disqus в рабочем блоге:

_includes / disqus.html:

{% if page.comments %}
<div class="container">
    <div class="row">
        <div class="col-lg-8 col-md-10 mx-auto">
            <div id="disqus_thread"></div>
            <script>
            /**
            *  RECOMMENDED CONFIGURATION VARIABLES: EDIT AND UNCOMMENT THE SECTION BELOW TO INSERT DYNAMIC VALUES FROM YOUR PLATFORM OR CMS.
            *  LEARN WHY DEFINING THESE VARIABLES IS IMPORTANT: https://disqus.com/admin/universalcode/#configuration-variables*/
            var disqus_config = function () {
            this.page.url = "{{ site.url }}{{ page.url }}";  // Replace PAGE_URL with your page's canonical URL variable
            this.page.identifier = "{{ page.id }}"; // Replace PAGE_IDENTIFIER with your page's unique identifier variable
            };
            (function() { // DON'T EDIT BELOW THIS LINE
            var d = document, s = d.createElement('script');
            s.src = 'https://DIRSETUP.disqus.com/embed.js'; // YOUR ACCOUNT
            s.setAttribute('data-timestamp', +new Date());
            (d.head || d.body).appendChild(s);
            })();
            </script>
            <noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>             
        </div>
    </div>
</div>
{% endif %}

Приведенный выше код необходимо скопировать сDisqus, потому что он будет включать в себя URL-адрес для настройки сайта, но в вашем коде вы используете его как переменную из конфигурации.Я думаю, что у вас может быть проблема по ссылке, поэтому попробуйте изменить '{{ page.url }}' на "{{ page.id }}".В каталоге _layouts я просто передаю включение {% include disqus.html %} в post.html _posts у меня есть шаблон:

---
layout: post
published: false
comments: true
title: ""
excerpt: ""
date: 
categories: ['']
tags: ['', '']
---

Если вы хотите количество комментариев, вы также можете добавить:

<script id="dsq-count-scr" src="//{{ disqusShort }}.disqus.com/count.js" async></script>

перед закрывающим тегом </body> в _layouts / default.html .Затем вы можете добавить disqusShort: username к _config.yml _layouts / post.html добавьте:

{% if page.comments %} • <a href="{{ site.url }}{{ page.url }}#disqus_thread">0 Comments</a>{% endif %}

Когда я установил мой, я ссылался на " Добавление Disqus в блог Jekyll ".Я не получаю ошибок, поэтому надеюсь, что это поможет.

...