用于检测Google Chrome的预加载请求的HTTP标头

Tib*_*tan 13 google-chrome robots.txt meta-tags http-headers

Google Chrome 17引入了一项新功能,该功能可预加载网页,以便在实际发出请求时提高呈现速度(点击输入omnibar).

两个问题:是否有HTTP头在服务器端检测到这样的请求,如果实际存在一个什么是正确的响应以防止这样的预加载(以防止可能产生不良影响的意外请求)?

在进行预加载请求之前,Google Chrome是否会检查robots.txt?是否有针对此特定行为的robots.txt设置?(我希望/希望不允许已经有效).

是否有元标记通知Google Chrome永远不会在当前域上再次预加载?

abr*_*ham 13

当Firefox预取内容时(在引用者页面的标记的命令下),它会向请求发送以下标题:X-moz:prefetch

Safari也类似,使用:X-Purpose:预览.根据这张票,Chrome也是如此.

对于预呈现,Chrome不会向客户端发送任何标头.相反,必须使用JS中的Page Visibility API

来源,额外阅读

  • @krispy - 即使开发人员没有选择加入(例如当用户在网址栏中输入时),实际上也会进行预呈现.这对我们来说是一个令人讨厌的错误的原因.检测此AFAIK的唯一方法是通过页面可见性API,因此无法检测到它的服务器端.IMO他们真的应该在这种情况下设置一个http标头(他们没有这样做). (3认同)
  • @UpTheCreek,自从我发布以来,预渲染的选择性可能已经发生了变化.也就是说,我认为预渲染只能通过GET请求进行.因此,可以通过符合HTTP标准并且不执行GET请求的操作来避免Chrome预取API调用导致的错误.GET请求仅用于获取数据.其他操作存在POST,PUT和DELETE.请注意,我并不是说您的错误与此有任何关联.我只是为了那些在构建API时可能遇到此问题的人提及它. (3认同)
  • 我认为需要明确的是,预渲染和预取不是一回事。默认情况下,预取在主要浏览器中是打开的,并且总是由一个特殊的标题指示(Chrome 中的“X-Purpose: preview”)。预渲染是一项实验性的 Chrome 功能,开发人员必须选择加入。没有用于检测预渲染的标头,因为开发人员知道他们是否已打开它。 (2认同)
  • @krispy:获取数据会消耗资源,并且如果请求格式错误(例如错误的查询字符串),可能会导致服务器端生成错误消息。自动执行此操作并且完全没有办法指示它是可笑的。这也是对 Chrome 用户带宽的严重滥用。 (2认同)

小智 9

Chrome不再发送X-Purpose标头,并且他们无动于衷地表示他们不会在此处修复此问题:https://code.google.com/p/chromium/issues/detail? id = 86175(票证已关闭为wontfix) .