我对 Chrome 有这个奇怪的问题。它经常出现缓存 PUT 请求。
详细信息:我有一个使用backbone.js 的应用程序,当尝试对模型进行一些更改时(骨干网自动生成一个PUT 请求),Chrome 只是不会将该请求发送到服务器。它在 Firefox 和 IE 中运行良好(到目前为止还没有在 Safari 中看到这个问题)。
这是 Chrome 开发人员工具的网络选项卡的屏幕截图。如您所见,PUT 请求的响应正在从缓存中返回(请求没有命中服务器!!)
这是同一请求的标头详细信息的屏幕截图。再一次,很明显 Chrome 不会费心向服务器发送 PUT 请求。
请求的有效负载是 JSON 数据。关于为什么会发生这种情况/我做错了什么的任何想法?
更新: Chromium 已经确认这确实是一个错误(感谢 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();
}