Folks, У меня есть веб-приложение, в котором я повторно использовал один и тот же маршрут для JSON и HTML-представлений одного и того же ресурса, позвольте называть его /foo/details на данный момент. Эта страница связана, откройте ее /bar/details. (так что, глядя на /bar/details вы видите ссылку на → /foo/details).
Когда я перехожу с первой страницы на вторую, все работает нормально. Когда я нажимаю кнопку "Назад" в Chrome, исходная страница отображается как JSON вместо HTML. Если я ударил обновление в браузере, я получаю представление HTML, а не JSON.
Вот код, который я использую для обнаружения JSON vs 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 кэширует страницу, но кэширует неправильный заголовок accepts
Я могу обойти это, используя два разных маршрута: один для Json и один для Html, но мне это не нравится, поскольку мне кажется, что я сдаюсь.
У кого-нибудь есть идеи относительно того, что вызывает это поведение только в обратной кнопке?