【发布时间】:2010-11-30 18:14:35
【问题描述】:
情况如下:
我有一个响应资源列表请求的 Web 应用程序,比如说:
/items
这最初是由网络浏览器通过导航到该路径直接请求的。浏览器使用它的标准“Accept”标头,其中包括“text/html”,我的应用程序注意到这一点并返回项目列表的 HTML 内容。
在返回的 HTML 中是一些 JavaScript (jQuery),然后执行 ajax 请求来检索实际数据:
/items
只有这一次,“Accept”标头被显式设置为“application/json”。同样,我的应用程序注意到了这一点,并且 JSON 被正确返回到请求中,数据被插入到页面中,一切都很顺利。
问题来了:用户导航到另一个页面,然后按下返回按钮。然后提示他们保存文件。这原来是项目列表的 JSON 数据。
到目前为止,我已经确认 Google Chrome 和 Firefox 3.5 都会发生这种情况。
这里有两种可能的答案:
如何解决此问题。是 有一些神奇的组合 Cache-Control 标头或其他 巫毒教导致浏览器做 这里是正确的吗?
如果你认为我在做某事 这里大错特错,我该怎么走 对这个?我正在寻求正确性, 但也尽量不牺牲 灵活性。
如果有帮助,该应用程序是一个 JAX-RS Web 应用程序,使用 Restlet 2.0m4。如果有帮助,我可以提供示例请求/响应标头,但我相信该问题是完全可重现的。
【问题讨论】:
-
这看起来像是我在弄清楚 (stackoverflow.com/questions/5250923) 之后会遇到的一个未来问题。我很好奇,您最终是坚持使用此解决方案还是最终放弃了它以使用不同的 URL?对于同一资源的不同表示,单个 RESTful URL 的简洁性当然是理想的。
标签: ajax json web-applications jax-rs content-negotiation