我正在开发一个应用程序,该应用程序应该为“正常”浏览器请求和 AJAX 请求提供不同内容的相同 URL 请求。(实际上,如果请求是 AJAX,则将响应 HTML 封装在 JSON 对象中)。
为此,我在服务器端检测 AJAX 请求,并适当处理响应,请参见下面的伪代码:
function process_response(request, response)
{
if request.is_ajax
{
response.headers['Content-Type'] = 'application/json';
response.headers['Cache-Control'] = 'no-cache';
response.content = JSON( some_data... )
}
}
问题是,当对当前查看的 URL 的第一个 AJAX 请求在 Google Chrome 上发生奇怪的事情时- 如果在响应到来并通过 JavaScript 处理之后,用户点击了一些链接(静态,重定向到其他页面)和然后单击浏览器中的后退按钮,他看到返回的 JSON代码而不是呈现的网站(记录服务器我可以说没有发出请求)。在我看来,Chrome 存储了特定 URL 的最新请求响应,并且没有考虑到它具有不同的内容类型等。
这是 Chrome 中的错误还是我滥用了 HTTP 协议?
--- 更新 2012 年 12 月 11 日 12:38 UTC
在 PatrikAkerstrand 回答之后,我发现了以下 Chrome 错误:http ://code.google.com/p/chromium/issues/detail?id=94369
任何想法如何避免这种行为?