La risposta è: dipende.
Supponiamo di avere ricevuto
If-None-Match: *
If-Modified-Since: <yesterday date>
E la pagina è stata modificata oggi.
Per prima cosa, diamo uno sguardo allo *
che ci dice: "Restituisce 304 se la risorsa è presente e condizione (2) è soddisfatta". Bene, la risorsa esiste, condizione BUT (2) afferma: "Restituisce solo 304, se la data è successiva alla corrente". Quindi questa condizione non è soddisfatta e la pagina verrà consegnata completamente.
Se non avessimo ricevuto If-Modified-Since
, la risposta sarebbe stata 304.
Se la risorsa non fosse esistito, su richiesta, avremmo restituito il codice appropriato (come se non ci fosse If-None-Match
).
304 deve essere restituito solo in risposta per le richieste GET e HEAD e tutte le intestazioni di risposta relative alla cache devono essere presenti. Per tutti gli altri tipi di richiesta, il server deve rispondere a 412 (precondizione non riuscita).
Spero che sia d'aiuto;)
fonte
2010-01-29 19:57:09
Quindi quando hai * in If-None-Match l'unico modo per emettere un 304 è quando If-Modified-Since è impostato e corrispondente? – AlexV
O questo, o senza "Se-Modificato-Dal". Quindi ci sono 2 modi. –