【发布时间】:2012-05-29 18:14:13
【问题描述】:
在任何事情之前:$.getJSON back button showing JSON return data not the page 没有帮助,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)
【问题讨论】:
标签: jquery ruby-on-rails ruby internet-explorer google-chrome