Ho questo bizzarro problema con Chrome. Molto spesso sembra memorizzare le richieste PUT in cache.Chrome sta memorizzando nella cache una richiesta HTTP PUT
I Dettagli: Ho un app utilizzando backbone.js e quando si cerca di persistere alcune modifiche ad un modello (spina dorsale genera automaticamente una richiesta PUT), Chrome appena wont inviare tale richiesta al server. Funziona perfettamente bene in Firefox e IE (non ho visto il problema in Safari finora).
Ecco uno screenshot dalla scheda Rete degli strumenti di sviluppo di Chrome. Come puoi vedere, la risposta per la richiesta PUT viene restituita dalla cache (la richiesta non colpisce il server !!)
Ecco uno screenshot dei dettagli dell'intestazione di quella stessa richiesta. Ancora una volta, è evidente che Chrome non si preoccupa di inviare la richiesta PUT al server.
Il payload della richiesta è dati JSON. Qualche idea sul perché questo sta accadendo/cosa sto facendo male?
UPDATE: Chromium ha confermato che questa è davvero una bug on it's end (grazie gen Hančič).
soluzione temporanea ho finito override Backbone.sync
metodo e aggiungendo un timestamp alla querystring di PUT, POST e DELETE richieste in modo che siano sempre unici:
if(!options.data && model && (method == 'create' || method == 'update' || method == 'delete')) {
params.url += (params.url.indexOf('?') == -1 ? '?' : '&') + '_=' + new Date().getTime();
}
questo accade solo se si inviano i dati nella richiesta PUT, che avrete già inviato prima o fa questo anche occure se si modificano i dati da presentare e far scattare la chiedere di nuovo? –
La risposta dal server non cambia forse è per questo che viene memorizzata nella cache. Come ha detto Robin, modifica/correggi la richiesta – Zebra
I dati cambiano decisamente. Tuttavia, penserei che non dovrebbe importare se i dati sono cambiati o meno. Un PUT in realtà non è un tipo di richiesta memorizzabile nella cache. È pensato per inviare dati al server, non per recuperare i dati. – anushr