我对Chrome有这个奇怪的问题。它经常会缓存PUT请求。Chrome浏览器正在缓存HTTP PUT请求
详细信息:我有一个应用程序使用backbone.js,当试图坚持对模型进行一些更改(骨干自动生成PUT请求)时,Chrome不会将该请求发送到服务器。它在Firefox和IE中工作得很好(迄今为止在Safari上还没有看到这个问题)。
下面是Chrome开发人员工具“网络”选项卡的屏幕截图。如您所见,PUT请求的响应正从缓存中返回(请求不会触及服务器!!)
下面是该同一请求的标头详细信息的屏幕截图。再次表明,Chrome不会将PUT请求发送到服务器。
请求的负载是JSON数据。任何想法为什么这是发生/我做错了什么?
更新:铬已确认这确实是bug on it's end(感谢JanHanč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();
}
请问如果在PUT请求发送数据时,如果更改提交并触发数据,你会之前就已经发送或这是否也occure这只是发生再次请求? – 2012-08-01 06:45:24
服务器的响应不会改变,也许这就是它缓存的原因。就像罗宾说的那样,更改/更正请求 – Zebra 2012-08-01 06:46:19
数据肯定会改变。但是,我认为数据是否已经改变并不重要。 PUT实际上不是可缓存的请求类型。它意味着将数据发送到服务器,而不是获取数据。 – anushr 2012-08-01 06:48:40