Je sais que vous pouvez guide Chrome pour pré-relire des liens que les utilisateurs risquent de cliquer sur votre site , mais pouvez-vous également effectuer l'inverse? Pouvez-vous dire à Chrome (ou vraiment à tout navigateur ) de ne pas pré-extraire et prérender votre site?
Existe-t-il un tag ou un autre moyen permettant aux navigateurs de pré-rechercher des liens dans la page actuellement affichée ne devrait pas être effectué?
Chrome et Safari envoient un en-tête HTTP X-Purpose: preview
lors de la pré-extraction/restitution du contenu Web. [ Source ]
Firefox envoie un en-tête similaire appelé X-moz: prefetch
. [ Source ]
Pour bloquer le prélecture, vous pouvez renvoyer une réponse 404 lorsque de tels en-têtes sont détectés, comme suggéré par Peter Freitag dans cet article de blog . Il recommande d'ajouter ces lignes à .htaccess
pour bloquer le prélecture de Firefox:
RewriteEngine On
SetEnvIf X-moz prefetch HAS_X-moz
RewriteCond %{ENV:HAS_X-moz} prefetch
RewriteRule .* /prefetch-attempt [L]
Vous pouvez étendre cela pour bloquer Firefox, Safari et Chrome en effectuant une pré-extraction comme ceci (non testé, mais qui devrait fonctionner):
RewriteEngine On
SetEnvIf X-moz prefetch HAS_preview
SetEnvIf X-Purpose preview HAS_preview
RewriteCond %{ENV:HAS_preview} .
RewriteRule .* /prefetch-attempt [L]
Google Chrome n'envoie plus d'en-têtes spéciaux pour les demandes de pré-création. Voir:
La réponse ci-dessus n'a pas fonctionné pour moi. Qu'est-ce qui a bien fonctionné, cependant:
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]
De: askapache.com
L'indicateur [F] renvoie un code d'état 403 Interdit au navigateur, tandis que le [L] indique que cette règle doit être la dernière règle à traiter.
De plus, chrome ne semble plus lancer de pré-extraction de liens (du moins pour les balises META précédentes/suivantes).