【发布时间】:2013-05-06 14:13:28
【问题描述】:
各位, 我有一个 Web 应用程序,我在其中对同一资源的 JSON 和 HTML 表示重新使用了相同的路由,现在我们称之为 /foo/details。此页面链接自,我们称其为 /bar/details。 (因此,查看 /bar/details 您会看到指向 -> /foo/details 的链接)。
当我从第一页转到第二页时,一切正常。当我在 Chrome 中单击后退按钮时,原始页面呈现为 JSON 而不是 HTML。如果我在浏览器中点击刷新,我会得到 HTML 表示而不是 JSON。
这是我用来检测 JSON 与 HTML 的代码:
res.result.map { group =>
render {
case Accepts.Html() => Ok(views.html.groups.details(group))
case Accepts.Json() => Ok(Json.toJson(group))
}
}.getOrElse(NotFound)
这是此模式的标准实现,它适用于任何地方,除了当我在某些情况下使用 Chrome 中的后退按钮时。
是否有一些我没有清除的值,或者我的页面使用 Ajax 做的事情让 Play 混淆以使其在 Json 中呈现,或者 Chrome 正在缓存页面但缓存了错误的接受标头??
我可以通过使用两种不同的路线来解决这个问题,一种用于 Json,另一种用于 Html,但我不喜欢这样,因为感觉就像我要放弃了。
有人知道是什么原因导致后退按钮出现这种行为吗?
【问题讨论】:
-
可能是一些浏览器缓存。你试过不同的浏览器吗?
-
这绝对是Chrome的浏览器缓存。
标签: json google-chrome playframework-2.0