gpt4 book ai didi

javascript - Chrome 在导航到新页面并使用 Ruby on Rails 作为后端点击后退按钮后显示缓存的 JSON

转载 作者:行者123 更新时间:2023-11-28 03:11:13 25 4
gpt4 key购买 nike

问题:

在从同一基本 URL 检索 HTML 和 JSON 时离开使用 pushState 和 popState 处理后退和前进导航的页面后,使用后退按钮返回页面将显示缓存的 JSON 而不是 HTML。

描述:

  1. 使用与页面 URL 相同的 URL,但使用 format=json,在我们的应用程序中通过搜索结果对页面进行 Ajax 调用。
  2. 在每个页面上都会调用 window.history.pushState(state,null,url)
  3. 当在此页面中使用后退和前进按钮时,会在内部使用 popState。
  4. 结果包含加载其他页面的链接。 (此应用程序不是 SPA)
  5. 点击其中一个链接,然后点击“后退”按钮后,Chrome 会显示存储在状态中的 JSON,而不是带有控制台错误的上一页:

Resource interpreted as Document but transferred with MIME type application/json

Firefox 和 Safari 正确地重新加载页面,并且由于我正在更新 PushState 调用中的 URL,它们会正确地将页面重新加载到我希望的状态(即 url 具有正确的页面标识,因此重新加载正确的页面)搜索结果)。

最佳答案

看起来答案是关闭 JSON 缓存或让 Chrome 相信缓存的 JSON 不是我们想要的。根据另一个问题的答案,我在返回 JSON 时在 Rails Controller 中添加了 response.headers['Vary'] = 'Accept'

所以,在上下文中:

respond_to do |format|
format.html do
render :template => xxx
end
format.json do
response.headers['Vary'] = 'Accept'
render :json => {...}
end
end

对我有帮助的问题:

关于javascript - Chrome 在导航到新页面并使用 Ruby on Rails 作为后端点击后退按钮后显示缓存的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60101640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com