这里时的情况:内容协商忽略使用浏览器的后退按钮
我有一个Web应用程序,响应的资源列表的请求,让说:
/items
这是最初通过导航到该路径直接由网络浏览器请求。浏览器使用标准的“Accept”标题,其中包含“text/html”,我的应用程序会注意到这一点,并返回项目列表的HTML内容。
在返回的HTML是一些JavaScript(jQuery的),然后做一个Ajax请求检索实际数据:
/items
只是这一次,“接受”头明确设置为“应用程序/ JSON”。同样,我的应用程序注意到这一点,并且JSON被正确地返回到请求中,数据被插入到页面中,并且一切都很开心。
问题来了:用户导航到另一个页面,然后按下BACK按钮。然后提示他们保存文件。这原来是项目列表的数据JSON。
到目前为止,我已确认这发生在Google Chrome和Firefox 3.5中。
有两种可能这里的答案:
我怎样才能解决这个问题。是 有一些神奇的组合 缓存控制头,或其他 伏都教导致浏览器在这里做 正确的事情?
如果你觉得我在做点什么 这里可怕的错,我该怎么去 这个呢?我正在寻求正确性,但也努力不牺牲 的灵活性。
如果有帮助,该应用程序是使用Restlet 2.0m4的JAX-RS Web应用程序。如果有帮助,我可以提供示例请求/响应标题,但我相信问题是完全可重现的。
“返回”按钮是邪恶的。 – 2009-09-23 13:25:43
这看起来像我将找到后的未来问题(http://stackoverflow.com/questions/5250923)。我很好奇,你最终坚持使用这个解决方案还是最终放弃了它的不同URL?对于同一资源的不同表示的单一RESTful URL的清洁度当然是理想的。 – mckamey 2011-03-09 19:25:53