以下是情况:
我有一个Web应用程序,响应请求资源列表,例如:
/items
这最初是通过直接导航到该路径由Web浏览器请求的。浏览器使用其标准的“Accept”头,其中包括“text / html”,我的应用程序注意到这一点并返回项目列表的HTML内容。
在返回的HTML中有一些JavaScript(jQuery),它然后执行一个ajax请求来检索实际数据:
/items
这次,"Accept"头部被明确设置为"application/json"。我的应用程序注意到了这一点,并正确返回了JSON数据以响应请求,数据被插入到页面中,一切都很顺利。
问题来了:用户导航到另一个页面,稍后按下"返回"按钮。然后他们会被提示保存一个文件,结果是项目列表的JSON数据。
到目前为止,我已经确认在Google Chrome和Firefox 3.5中都会出现这种情况。
这里有两种可能的答案:
1. 如何解决问题?是否有一些神奇的Cache-Control头部组合或其他巫术可以使浏览器在这里做正确的事情? 2. 如果您认为我在这里做错了什么,请告诉我该如何做?我正在寻求正确性,但也试图不牺牲灵活性。
如果有帮助的话,该应用程序是一个JAX-RS Web应用程序,使用Restlet 2.0m4。如果需要,我可以提供示例请求/响应头部,但我相信该问题是完全可重现的。