web-dev-qa-db-ja.com

Chromeおよび他のブラウザが私のサイトのプリフェッチ/レンダリングを停止することは可能ですか?

ガイドChromeは、ユーザーがサイトをクリックする可能性があると思われるリンクをプリフェッチするために ですが、逆もできますか? Chrome(または実際にはanyブラウザー)にサイトをプリフェッチおよびプリレンダリングしないように指示できますか?

現在表示されているページからリンクをプリフェッチしてはいけないことをブラウザに伝えるタグやその他の方法はありますか?

14
Ian C.

ChromeおよびSafariは、Webコンテンツのプリフェッチ/レンダリング時にX-Purpose: preview HTTPヘッダーを送信します。 [ ソース ]

FirefoxはX-moz: prefetchという同様のヘッダーを送信します。 [ ソース ]

プリフェッチをブロックするには、Peter Freitagが このブログ投稿 で提案したように、そのようなヘッダーが検出されたときに404応答を返すことができます。 Firefoxのプリフェッチをブロックするには、次の行を.htaccessに追加することをお勧めします。

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]
11
Nick

Google Chromeは、リクエストの事前レンダリングに特別なヘッダーを送信しなくなりました。見る:

7
hawk

上記の答えは私にはうまくいきませんでした。しかし、うまくいったのはこれでした:

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]

From: askapache.com

[F]フラグは、403 Forbiddenステータスコードをブラウザに返します。[L]は、ルールが最後に処理されるルールであることを示します。

また、chromeはもはやリンクをプリフェッチしないようです(少なくとも、prev/nextメタタグの場合)。

1
Gabe Hiemstra