Apakah mungkin untuk menghentikan Chrome dan browser lain dari pre-fetching / rendering situs saya?

14

Saya tahu Anda dapat memandu Chrome untuk membuat pranala tautan yang menurut Anda cenderung diklik oleh pengguna di situs Anda , tetapi bisakah Anda juga melakukan kebalikannya? Bisakah Anda memberi tahu Chrome (atau benar - benar peramban apa pun ) untuk tidak mengambil dan membuat prerender situs Anda?

Apakah ada tag atau cara lain yang bisa saya sampaikan kepada browser bahwa pengambilan tautan sebelumnya dari halaman yang saat ini dilihat tidak boleh dilakukan?

Ian C.
sumber
1
Penasaran, mengapa Anda menginginkan ini?
Martijn
@ Martijn Satu kasus yang dapat saya lihat adalah ketika situs Anda berisi konten yang tergantung waktu atau sangat dinamis di mana penundaan antara rendering halaman dan ketika pengguna benar-benar melihatnya penting.
Anders Fjeldstad

Jawaban:

12

Chrome dan Safari mengirim X-Purpose: previewtajuk HTTP saat mengambil / merender konten web. [ Sumber ]

Firefox mengirimkan header serupa yang disebut X-moz: prefetch. [ Sumber ]

Untuk memblokir pengambilan sebelumnya, Anda dapat mengembalikan respons 404 saat tajuk seperti itu terdeteksi, seperti yang disarankan oleh Peter Freitag dalam posting blog ini . Dia merekomendasikan untuk menambahkan baris-baris ini .htaccessuntuk memblokir prefetch Firefox:

RewriteEngine On
SetEnvIf X-moz prefetch HAS_X-moz 
RewriteCond %{ENV:HAS_X-moz} prefetch 
RewriteRule .* /prefetch-attempt [L]

Anda dapat memperluas ini untuk memblokir prefetching Firefox, Safari, dan Chrome seperti ini (belum diuji, tetapi seharusnya berfungsi):

RewriteEngine On
SetEnvIf X-moz prefetch HAS_preview 
SetEnvIf X-Purpose preview HAS_preview
RewriteCond %{ENV:HAS_preview} .
RewriteRule .* /prefetch-attempt [L]
Nick
sumber
1

Jawaban di atas tidak berhasil untuk saya. Namun apa yang berhasil adalah:

RewriteEngine On
SetEnvIfNoCase X-Forwarded-For .+ proxy=yes
SetEnvIfNoCase X-moz prefetch no_access=yes

# block pre-fetch requests with X-moz headers
RewriteCond %{ENV:no_access} yes
RewriteRule .* - [F,L]

Dari: askapache.com

Bendera [F] mengembalikan kode status Terlarang 403 ke browser, sementara [L] menunjukkan bahwa aturan harus menjadi aturan terakhir yang akan diproses.

Selain itu, chrome tampaknya tidak membuat pranala lagi (setidaknya, untuk tag meta prev / next).

Gabe Hiemstra
sumber