gpt4 book ai didi

javascript - Chrome 正在缓存 HTTP PUT 请求

转载 作者:可可西里 更新时间:2023-11-01 02:45:53 26 4
gpt4 key购买 nike

我在使用 Chrome 时遇到了这个奇怪的问题。它似乎经常缓存 PUT 请求。

详细信息:我有一个使用 backbone.js 的应用程序,当尝试将某些更改保存到模型时(backbone 自动生成 PUT 请求),Chrome 不会将该请求发送到服务器。它在 Firefox 和 IE 中工作得很好(到目前为止还没有在 Safari 中看到这个问题)。

这是 Chrome 开发者工具的“网络”选项卡的屏幕截图。如您所见,PUT 请求的响应是从缓存中返回的(请求没有到达服务器!!) Chrome caches PUT request

这是同一请求的 header 详细信息的屏幕截图。再一次,很明显 Chrome 不会费心向服务器发送 PUT 请求。 Chrome cached PUT request header

请求的负载是 JSON 数据。关于为什么会发生这种情况/我做错了什么有什么想法吗?

更新: Chromium 已确认这确实是一个 bug on it's end (感谢 Jan Hančič)。

临时解决方案我最终覆盖了 Backbone.sync 方法并将时间戳附加到 PUT、POST 和 DELETE 请求的查询字符串,以便它们始终是唯一的:

if(!options.data && model && (method == 'create' || method == 'update' || method == 'delete')) {
params.url += (params.url.indexOf('?') == -1 ? '?' : '&') + '_=' + new Date().getTime();
}

最佳答案

我使用额外的参数来避免缓存:

url += '?_dc=' + Math.random().toFixed(20).replace('.', '');

我不在服务器端解释这个参数。

编辑: 除了 chrome,还有很多东西可以缓存请求——例如用户的代理服务器。我认为额外的查询参数是避免缓存的好方法。

关于javascript - Chrome 正在缓存 HTTP PUT 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11753751/

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