2013-08-24 18 views
7

sto utilizzando un servizio angolare per ottenere una risorsa tramite un API REST. Il server imposta l'intestazione ETag su un valore e imposta anche Cache-Control: no-cache nella risposta.browser Chrome non l'invio di 'If-None-Match' per XHR

Questo funziona come previsto utilizzando Firefox, ma quando accedo alla stessa app utilizzando Chrome, non viene inviato il numero If-None-Match. Ho provato sulle attuali dev Chrome e canali stabili sia su un Mac e una casella di Ubuntu, ed era lo stesso su entrambi, mentre Firefox è stata aggiunta la If-None-Match correttamente.

Ora, ci sono altre risorse non-xhr/statiche che vengono recuperate in modo condizionale e tutte quelle richieste ricevono correttamente una risposta 304 NOT MODIFIED.

C'è qualcosa che posso fare per ottenere maggiori informazioni sul motivo per cui Chrome non sta inviando l'intestazione If-None-Match solo per le richieste XHR?

+0

Ho lo stesso problema –

risposta

4

Se stai rilascio di una query Ajax in Chrome su HTTPS, eventuali errori del certificato, come l'utilizzo di un CERT auto-firmato sul server API, evitare che la risposta vada in cache. Questo sembra essere di design.

Evidentemente un Chrome defectexisted ma era fixed in Webkit e ne ha fatto in Chromium/Chrome intorno 2010.

Un'altra question consiglia di impostare il If-Modified-Since e Se-None-Match intestazioni manualmente utilizzando ifModified jQuery: true e cache: opzioni true. Sfortunatamente questo non supererà il comportamento previsto da Chrome per non memorizzare nella cache le risposte HTTPS da un server con un certificato autofirmato.

test su un server con un certificato SSL firmato valido risolto il problema per me; Chrome ha ricevuto 304 di testo/contenuto HTML come previsto, utilizzando i metodi jQuery AJAX predefiniti.

+0

ho provato ed è vero, come ha detto @Darren. – frustigor