是否可以阻止Chrome和其他浏览器预取/呈现我的网站?


14

我知道您可以引导Chrome浏览器预取您认为用户可能会点击您网站的链接,但是您也可以反向进行吗?您能否告诉Chrome(或实际上是任何浏览器)不要预取和预呈现您的网站?

是否有标签或其他方式,我可以告诉大家,预先撷取从当前浏览的网页链接不应该做的浏览器?


1
很好奇,你为什么要这个?
Martijn

@Martijn我可以看到一种情况,当您的网站包含与时间相关或高度动态的内容时,页面渲染与用户实际看到它之间的延迟很重要。
安德斯·菲耶斯塔德

Answers:


12

X-Purpose: preview在预提取/呈现网络内容时,Chrome和Safari发送HTTP标头。[ 来源 ]

Firefox发送类似的标题为X-moz: prefetch。[ 来源 ]

为了阻止预取,您可以在检测到此类标头时返回404响应,如本博客文章中的 Peter Freitag所建议。他建议添加以下行.htaccess以阻止Firefox预取:

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

您可以将其扩展为阻止Firefox,Safari和Chrome这样的预取(未测试,但应该可以):

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


1

以上答案对我没有用。起作用的是:

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]

来自:askapache.com

[F]标志向浏览器返回403禁止状态代码,而[L]指示该规则应为最后要处理的规则。

同样,chrome似乎不再预取链接(至少对于prev / next meta标签而言)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.