Est-il possible d'empêcher Chrome et d'autres navigateurs de pré-récupérer / afficher mon site?

14

Je sais que vous pouvez guider Chrome pour précharger les liens que vous pensez que les utilisateurs sont susceptibles de cliquer sur votre site , mais pouvez-vous également faire l'inverse? Pouvez-vous dire à Chrome (ou à n'importe quel navigateur) de ne pas pré-extraire et prérender votre site?

Existe-t-il une balise ou un autre moyen de dire aux navigateurs que la prélecture des liens à partir de la page actuellement consultée ne doit pas être effectuée?

Ian C.
la source
1
Curieux, pourquoi voudriez-vous cela?
Martijn
@Martijn Un cas que je peux voir, c'est quand votre site contient du contenu dépendant du temps ou très dynamique où un délai entre le rendu de la page et le moment où l'utilisateur le voit réellement importe.
Anders Fjeldstad

Réponses:

12

Chrome et Safari envoient un X-Purpose: previewen-tête HTTP lors de la prélecture / du rendu du contenu Web. [ Source ]

Firefox envoie un en-tête similaire appelé X-moz: prefetch. [ Source ]

Pour bloquer la 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 ce billet de blog . Il recommande d'ajouter ces lignes .htaccesspour bloquer la 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 l'étendre pour bloquer la pré-lecture de Firefox, Safari et Chrome comme ceci (non testé, mais devrait fonctionner):

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

La réponse ci-dessus n'a pas fonctionné pour moi. Ce qui a fonctionné, cependant, était le suivant:

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

Le drapeau [F] renvoie un code d'état interdit 403 au navigateur, tandis que le [L] indique que la règle doit être la dernière règle à traiter.

De plus, Chrome ne semble plus faire de prélecture des liens (du moins, pour les balises META prev / next).

Gabe Hiemstra
la source