在任何事情之前:$.getJSON 后退按钮显示 JSON 返回数据而不是页面没有帮助,以及https://groups.google.com/group/angular/browse_thread/thread/3787ad609c0beb77/eb1b57069dab9f63没有帮助,互联网也没有帮助没有帮助。
这是问题:
我从页面中调用 url 来获取 json 数据,然后在同一页面内使用 jquery 模板呈现这些数据。
想象一下,我们在http://someurl.com/search页面上,我们正在开始这样的请求
$.ajax({
url: '/searchthis', //important, this is NOT THE SAME URL
cache: false,
type: 'GET',
headers: {
"Accept": "application/json",
},
dataType: 'json'
success: function(data) {
doSomethingWithResults(data);
}
});
Rack 响应将缓存控制标头设置为无缓存:
Cache-Control:no-cache
一切正常,但如果您在 Chrome 中离开页面转到另一个页面,然后按后退按钮,您将看到裸 JSON 数据。当您在 IE8 中点击重新加载按钮时,也会出现相同的行为。如果您只需在地址栏中的 url 上按 Enter,两者都可以正常工作。
我不知道如何解决这个问题,因为 Chrome 的人不会这样做(参见http://code.google.com/p/chromium/issues/detail?id=108425)
在我看来,这似乎是浏览器方面的误解,因为它缓存了它确实不应该缓存的东西(响应标头),并且它缓存了错误的 url 下的东西(因为 JSON 请求没有命中相同的 URL)