2014-10-07 80 views
8

我一直在使用使用“曲奇冲突”谷歌浏览器预渲染

<link rel="prerender" href="/path" /> 

但拉泰什更新后,当我尝试使用[chrome://net-internals/#prerender]调试Chrome的预渲染功能。它显示预渲染由于"Cookie Conflict"而中止。

我试图调试,以确保如果一些Ajax调用是在加载页面后更改cookie,但没有找到。 prerender仍然中止。它过去与以前的chrome版本配合良好。

+0

我认为它是一个已知的bug。请查看:https://groups.google.com/a/chromium.org/forum/#!msg/prerender/vcjoQmwwpM0/H0Q17LS1qW8J – newDevGeek 2014-10-29 17:47:52

回答

1

你所看到的是由于cookie冲突。

例子:

假设a.com使用Cookie 问候= ...来表示问候用户想用的欢迎。
假设问候语设置为“hello”。 我们prerender a.com/a.html,呈现“问候语=你好”。当服务器生成一个.html,时,它将从正在被渲染的网页上的cookie发出'hello'

现在,显示预渲染之前,假设在a.com更新问候“问候=你好” 接下来其他页面,假设用户导航到a.com/a.html。预渲染将被交换。但是,它看到了“问候”cookie的不同版本,而不是它现在的值。因此,该网页仍然显示'hello',而不是(更新)'howdy'。

在内部,它会跟踪预渲染(无论是在HTTP标头还是javascript中)暴露的所有Cookie。如果在显示预渲染之前修改了其中的任何内容,则会使预渲染无效。

这种无效是你观察到的。