gpt4 book ai didi

ajax - 根据 http 接受 header 提供内容 - 缓存问题?

转载 作者:可可西里 更新时间:2023-11-01 16:11:32 25 4
gpt4 key购买 nike

我正在开发一个应用程序,它应该为“正常”浏览器请求和请求相同 URL 的 AJAX 请求提供不同的内容。(实际上,如果请求是 AJAX,则将响应 HTML 封装在 JSON 对象中)。

为此,我在服务器端检测 AJAX 请求,并适本地处理响应,请参见下面的伪代码:

function process_response(request, response)
{
if request.is_ajax
{
response.headers['Content-Type'] = 'application/json';
response.headers['Cache-Control'] = 'no-cache';
response.content = JSON( some_data... )
}
}

问题是,当对当前查看的 URL 发出第一个 AJAX 请求时 Google Chrome 上发生了奇怪的事情 - 如果在响应到来并通过 JavaScript 处理后,用户点击了某个链接(静态,重定向到其他页面)然后单击浏览器中的后退按钮,他看到了返回的 JSON 代码而不是呈现的网站(记录服务器我可以说没有请求 制作)。在我看来,Chrome 存储了特定 URL 的最新请求响应,并且没有考虑到它具有不同的内容类型等。

这是 Chrome 中的错误还是我滥用了 HTTP 协议(protocol)

--- 更新 2012 年 12 月 11 日,12:38 UTC

根据 PatrikAkerstrand 的回答,我发现了以下 Chrome 错误:http://code.google.com/p/chromium/issues/detail?id=94369

有什么想法可以避免这种行为吗?

最佳答案

您还应该包括 Vary-header :

response.headers['Vary'] = 'Content-Type'

关于ajax - 根据 http 接受 header 提供内容 - 缓存问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13343599/

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