2015-07-26 22 views
7

Web alanları arası istekleri desteklemesi gereken bir REST API'sı uyguluyorum. CORS kullanarak bunu başarmak istiyorum. Hemen hemen tüm isteklerim 'basit değil', yani GET olmayan isteklerin tümü için bir ön kontrol isteği tarayıcı tarafından gönderilmelidir.Chrome ön fareyi önbelleğe almıyor

Ön kontrol/OPTIONS isteklerinin miktarını sınırlamak için, tarayıcının OPTIONS isteklerini önbelleğe almasına izin vermeye çalışıyorum. Bu, Firefox ve Safari'de çalışıyor, ancak Chrome'da çalışmıyor. Chrome'un yalnızca önkoşul isteklerini yalnızca 10 dakika önbelleğe alacağını biliyorum. Ancak, bu durumda hiçbir önbelleğe alma işlemi gerçekleşmiyor.

Bunlar Chrome tarafından alınan gönderilen HTTP istek ve cevaplarının/şunlardır:

İstek:

OPTIONS /api/v1/sessions HTTP/1.1 
Host: xxxxxxx 
Connection: keep-alive 
Pragma: no-cache 
Cache-Control: no-cache 
Access-Control-Request-Method: POST 
Origin: http://localhost:8000 
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.107 Safari/537.36 
Access-Control-Request-Headers: content-type 
Accept: */* 
Referer: http://localhost:8000/ 
Accept-Encoding: gzip, deflate, sdch 
Accept-Language: nl-NL,nl;q=0.8,en-US;q=0.6,en;q=0.4 

Yanıt:

HTTP/1.1 200 OK 
Date: Sun, 26 Jul 2015 09:33:27 GMT 
Server: Apache/2.4.7 (Ubuntu) 
X-Powered-By: PHP/5.5.9-1ubuntu4.9 
Cache-Control: private, max-age=1440, pre-check=1440 
Access-Control-Allow-Origin: http://localhost:8000 
Access-Control-Allow-Methods: GET,POST,PATCH,DELETE 
Access-Control-Max-Age: 86400 
Access-Control-Allow-Headers: content-type 
Content-Length: 0 
Keep-Alive: timeout=5, max=100 
Connection: Keep-Alive 
Content-Type: text/html; charset=utf-8 
+0

araçlarında ön-önbellek seçeneğinin ayarlanıp ayarlanmadığını kontrol edin. 'Pragma: no-cache' ve 'Önbellek Denetimi: no-cache' isteğiniz ayarlandıysa, istekte bulunanları kaldırmayı deneyin. – harishr

+0

Evet, ama onları açıkça belirlemiyorum. Chrome, istekte bulunanları gönderir, bunu nasıl kaldırabilirim? – user23127

+0

Kromdaki api taleplerimi kontrol ettim ve bu istek başlığı geçmiyor ... kromun kendisinin ayarlarından şüphe ettiğinden şüpheleniyorum, kodunuzu nereden aldığını kontrol etmeniz gerekiyor – harishr

cevap

9

isteğinize Pragma: no-cache & Cache-Control: no-cache kümesine sahip .. Bunları istekten kaldırmayı deneyin. Varsayılan olarak

API istekleri .. bu başlığı ayarlamak değil bu yüzden tek başına krom şüphe

onun içinde iyi çalışıyor düşünülürse ... o, nerede onlar set alıyorsanız adresinin kodunu kontrol etmek gerek ayarlar olduğunu diğer tarayıcılar,

+0

Şimdiye kadarki en iyi cevap, hepimizin bu seçeneği etkinleştirdik. =) – Olga

+0

Keşke bunu 1 saat önce bulduk, harika! –