Chrome浏览到新页面并使用Ruby on Rails作为后端点击返回按钮后显示缓存的JSON

问题描述 投票:1回答:1

问题

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

说明

  1. 在我们的应用程序中使用与页面URL相同的URL,但格式为json,在应用程序中使用Ajax调用页面来搜索结果。
  2. 在每页上调用window.history.pushState(state,null,url)
  3. popState在此页面中使用后退和前进按钮时在内部使用。
  4. 结果中包含加载其他页面的链接。 (此应用程序不是SPA)
  5. [单击这些链接之一,然后单击“返回”按钮后,Chrome浏览器会显示状态中存储的JSON,而不是上一页,显示控制台错误:
  6. 资源被解释为文档,但以MIME类型application / json传输

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

问题:离开使用pushState和popState从同一个基本URL检索HTML和JSON时处理向前和向后导航的页面后,使用返回按钮返回页面...

javascript ruby-on-rails google-chrome browser-history
1个回答
0
投票
看起来答案是关闭JSON的缓存,或者说服Chrome浏览器认为缓存的JSON不是我们想要的。根据另一个问题的答案,我在返回JSON时在rails控制器中添加了response.headers['Vary'] = 'Accept'
© www.soinside.com 2019 - 2024. All rights reserved.