Sayacın CSP içeren siteye kurulumu

Yandex.Metrica'nın oluşturduğu sayaç kodu inline türünde olup sayfaların HTML koduna eklenmek içindir. Content Security Policy teknolojisini kullanan sitelerde bu kod sadece şu özel eylemler yapılmış olmak kaydıyla çalışır: HTTP başlığında tarayıcıya nonce özelliğine sahip src-script direktifini (bu script öğesinin imzalanmasını gerektirir) ve noscript öğesinin içeriğini işlenmesi için img-src direktifini işleme izni aktarılmalı.

Yandex.Metrica'da sayaç kodu alımı için diğer bir yöntem de kullanabilirsiniz: Sayfaların HTML koduna sadece noscript öğesinin içeriğini ekleyip script öğesinin içeriğini dış komut dizisine (örneğin bir JS dosyasına) yükleyebilirsiniz.

Kullanacağınız yöntemi seçerken, HTTP başlığına, Yandex.Metrica'ya giriş izni eklemeniz gerekir.

Adres listesi
  • https://mc.yandex.ru
  • https://mc.yandex.az
  • https://mc.yandex.by
  • https://mc.yandex.co.il
  • https://mc.yandex.com
  • https://mc.yandex.com.am
  • https://mc.yandex.com.ge
  • https://mc.yandex.com.tr
  • https://mc.yandex.ee
  • https://mc.yandex.fr
  • https://mc.yandex.kg
  • https://mc.yandex.kz
  • https://mc.yandex.lt
  • https://mc.yandex.lv
  • https://mc.yandex.md
  • https://mc.yandex.tj
  • https://mc.yandex.tm
  • https://mc.yandex.ua
  • https://mc.yandex.uz
  • https://mc.webvisor.com
  • https://mc.webvisor.org
  • https://yastatic.net

Sayacın site sayfalarının HTML kodunda yerleştirilmesi

Uyarı. Örneklerde Yandex.Metrica'nın çalışması için gereken tüm adresler yazılmamıştır. Bkz. genel liste.
Bu yöntemi kullandığınızda Content-Security-Policy veya Content-Security-Policy-Report-Only şeklinde olan HTML başlığı aşağıdaki direktifleri içermelidir:
  • script-src direktifi (nonce özelliğine sahip). Özellik Latin harflerinden ve rakamlardan oluşan rastgele karakter dizisi şeklinde bir satır değeri içermelidir. Bu değer rastgele ve her bir isteğe özel olarak sunucuda oluşturulmalıdır.

    Content-Security-Policy: script-src 'nonce-<karakter dizisi>';

    Site sayfalarındaki sayaç kodunun nonce özelliği de (script öğesinde) aynı karakter dizisini içermelidir.

    ...<!-- Yandex.Metrika counter -->
    <script type="text/javascript" nonce="<karakter dizisi>">
        (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||
        []).push(arguments)};
    ...
  • img-src direktifi, noscript öğesi içeriğinin işlenebilmesi için.

    Content-Security-Policy: img-src https://mc.yandex.ru;
  • connect-src direktifi (Yandex.Metrica'ya bağlanılabilmesi için).

    Content-Security-Policy: connect-src https://mc.yandex.ru;
  • Oturum kaydının, tıklama haritalarının, bağlantıların ve kaydırma haritalarının doğru çalışması için child-src (blob: https://mc.yandex.ru satırının belirtildiği).
    Content-Security-Policy: child-src blob: https://mc.yandex.ru;
  • Oturum kaydının, tıklama haritalarının, bağlantıların ve scroll haritalarının doğru çalışması için frame-src (blob: https://mc.yandex.ru satırının belirtildiği).
    Content-Security-Policy: frame-src blob: https://mc.yandex.ru;

Bu yönteme göre oluşturulan HTML başlığının örneği:

Content-Security-Policy: ... img-src https://mc.yandex.ru; script-src https://mc.yandex.ru https://yastatic.net 'nonce-<karakter dizisi>'; connect-src https://mc.yandex.ru; ...

Sayacın dış komut dizisiyle bağlanması

Uyarı. Örneklerde Yandex.Metrica'nın çalışması için gereken tüm adresler yazılmamıştır. Bkz. genel liste.

Bu yöntemi kullandığınızda, Content-Security-Policy veya Content-Security-Policy-Report-Only şeklindeki HTTP başlığı, Yandex.Metrica veri yükleme kurallarını kapsayan ortak bir direktif seti içerebilir:

  • komut dizilerinin işlenebilmesini için script-src direktifi.

    Content-Security-Policy: script-src https://mc.yandex.ru https://yastatic.net;
  • img-src direktifi, noscript öğesi içeriğinin işlenebilmesi için.

    Content-Security-Policy: img-src https://mc.yandex.ru;
  • connect-src direktifi (Yandex.Metrica'ya bağlanılabilmesi için).

    Content-Security-Policy: connect-src https://mc.yandex.ru;
  • Oturum kaydının, tıklama haritalarının, bağlantıların ve kaydırma haritalarının doğru çalışması için child-src (blob: https://mc.yandex.ru satırının belirtildiği).
    Content-Security-Policy: child-src blob: https://mc.yandex.ru;
  • Oturum kaydının, tıklama haritalarının, bağlantıların ve scroll haritalarının doğru çalışması için frame-src (blob: https://mc.yandex.ru satırının belirtildiği).
    Content-Security-Policy: frame-src blob: https://mc.yandex.ru;

Bu yönteme göre oluşturulan HTML başlığının örneği:

Content-Security-Policy:
 ...
 img-src https://mc.yandex.ru;
 script-src 'self' https://mc.yandex.ru https://yastatic.net;
 connect-src https://mc.yandex.ru;
 ...

JavaScript kodunun JS türü bir dış dosyada bağlanmış olduğu bir örnek şu şekildedir: Bu durumda site sayfalarının HTML kodlarına sadece script öğesinin (src özellikli) eklenmesi gerekir. Bu özellik, metrika.js gibi bir dosya yolu içermelidir.

<script type="text/javascript" src="/metrika.js"></script>
  1. Yandex.Metrica arayüzünde Ayarlar bölümündeki Sayaç sekmesine geçip ilgili alandan script öğesinin içeriğini kopyalayın.
  2. Elde ettiğiniz kodu metrika.js dosyasının içine ekleyin.

    Dosya içeriğinin bir örneği:
    (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||
    []).push(arguments)};
        m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)
    [0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
        (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym")
        ym(XXXXXX, "init", {
            id:XXXXXX,
            clickmap:true,
            trackLinks:true,
            accurateTrackBounce:true,
            ut:"noindex"
        });

    Bu; XXXXXX Yandex.Metrica sayaç numarasıdır.

  3. Sayacın, JavaScript'i devre dışı olan ziyaretçiler hakkında bilgi toplayabilmesi için site sayfalarının HTML koduna noscript öğesinin içeriğini ekleyin:

    <noscript><div><img src="https://mc.yandex.ru/watch/XXXXXX" style="position:absolute; left:-9999px;" alt="" /></div></noscript> 

Bu durumda, sitede sayaç kodu doğrulaması çalışmaz. Sayaç listesinin bulunduğu sayfada sayacın durumu şöyle görünür: “Ana sayfaya yüklenmedi, ancak veri alınıyor”.