2013-08-24 10 views
7

Używam usługi kątowej, aby pobrać zasób przez api odpoczynku. Serwer ustawia nagłówek ETag na pewną wartość, a także ustawia w odpowiedzi odpowiedź Cache-Control: no-cache.Przeglądarka chrome nie wysyłająca "If-None-Match" dla xhr

Działa to zgodnie z oczekiwaniami przy użyciu przeglądarki Firefox, ale kiedy uzyskuję dostęp do tej samej aplikacji przy użyciu Chrome, nie wysyła ona numeru If-None-Match. Próbowałem już w obecnych wersjach Chrome i stabilnych kanałach zarówno na komputerze Mac, jak i na systemie Ubuntu. W obu przypadkach Firefox prawidłowo dodawał kod If-None-Match.

Istnieją inne zasoby inne niż xhr/statyczne, które są pobierane warunkowo, a wszystkie te żądania prawidłowo otrzymują odpowiedź 304 NOT MODIFIED.

Czy jest coś, co mogę zrobić, aby uzyskać więcej informacji o tym, dlaczego Chrome nie wysyła nagłówka If-None-Match tylko dla żądań XHR?

+0

Mam ten sam problem –

Odpowiedz

4

Jeśli wydajesz zapytanie Ajax w Chrome przez HTTPS, wszelkie błędy certyfikatu, takie jak używanie samopodpisanego certyfikatu na serwerze API, zapobiegają buforowaniu odpowiedzi. Wydaje się, że jest to zgodne z projektem.

ewidentnie Chrome defectexisted ale fixed w Webkit i uczynił go w Chromium/Chrome około 2010.

Innym question zaleca ustawienie If-Modified-Since i If-None-Match nagłówki ręcznie przy użyciu jQuery za ifModified: true i pamięć podręczna: prawdziwe opcje. Niestety, nie będzie to miało wpływu na zamierzone zachowanie Chrome, aby nie buforować odpowiedzi HTTPS z serwera z samopodpisanym certyfikatem.

Testowanie na serwerze z ważnym podpisanym certyfikatem SSL rozwiązało problem; Chrome otrzymał zgodnie z oczekiwaniami 304 dla treści tekstowych/html przy użyciu domyślnych metod jQuery AJAX.

+0

Próbowałem i to prawda, jak powiedział @Darren. – frustigor

Powiązane problemy