2013-08-24 7 views
7

ich einen Winkel Dienst bin mit einer Ressource über einen Rest api zu bekommen. Der Server setzt den Header ETag auf einen Wert und setzt auch Cache-Control: no-cache in seiner Antwort.Chrome-Browser sendet nicht ‚If-None-Match‘ für xhr

Dies funktioniert wie erwartet mit Firefox, aber wenn ich auf die gleiche App mit Chrome zugreifen, sendet es nicht die If-None-Match. Ich habe die aktuellen Chrome-Dev- und Stable-Channels sowohl auf einem Mac als auch auf einer Ubuntu-Box ausprobiert, und bei beiden war es dasselbe, während Firefox das If-None-Match korrekt hinzufügte.

Nun gibt es andere non-xhr/statische Ressourcen, die bedingt abgerufen werden und alle diese Anforderungen erhalten eine 304 NOT MODIFIED Antwort korrekt.

Gibt es etwas, was ich tun kann, um weitere Informationen darüber zu erhalten, warum Chrome den Header If-None-Match nicht nur für XHR-Anfragen sendet?

+0

Ich habe das gleiche Problem –

Antwort

4

Wenn Sie eine Ajax-Abfrage in Chrome über HTTPS sind Ausgabe, alle Zertifikatsfehler, wie ein selbst signiertes Zertifikat auf Ihrem API-Server verwenden, verhindern, dass die Antwort im Cache gespeichert werden. Dies scheint von Entwurf zu sein.

Offenbar ein Chrome defectexisted aber war fixed in Webkit und machte es in Chrom/Chrom etwa 2010

Ein weiterer question empfiehlt, die If-Modified-Since und If-None-Match-Header manuell jQuery ifModified mit: true und Cache: wahre Optionen. Leider wird das von Chrome beabsichtigte Verhalten nicht übergangen, HTTPS-Antworten von einem Server mit einem selbstsignierten Zertifikat nicht zu cachen.

Prüfung auf einem Server mit einem gültigen SSL-Zertifikat signiert löste das Problem für mich; Chrome erhielt wie erwartet 304 mit dem Standard jQuery AJAX-Methoden für Text-/HTML-Inhalt.

+0

Ich habe versucht, und es ist wahr, wie gesagt @Darren. – frustigor