La respuesta es: depende.
Supongamos que hemos recibido
If-None-Match: *
If-Modified-Since: <yesterday date>
Y la página se ha alterado hoy.
Primero, echamos un vistazo al *
que nos dice: "Devuelve 304 si el recurso está allí y se cumple la condición (2)". Bien, el recurso existe, PERO la condición (2) establece: "Solo devuelve 304, si la fecha es posterior a la actual". Por lo tanto, esta condición no se cumple y la página se entregará por completo.
Si no hubiéramos recibido If-Modified-Since
, la respuesta habría sido 304.
Si el recurso no había existido bajo petición, nos han devuelto el código apropiado (como si no había If-None-Match
).
304 solo debe devolverse en respuesta a solicitudes GET y HEAD, y todos los encabezados de respuesta relacionados con caché deben estar allí. Para todos los demás tipos de solicitudes, su servidor debe responder al 412 (condición previa no).
Espero que ayude;)
Entonces, cuando tiene * en If-None-Match, ¿la única manera de emitir un 304 es cuando el If-Modified-Since está configurado y haciendo juego? – AlexV
O eso, o sin 'If-Modified-Since' en absoluto. Entonces hay 2 formas. –