Sto implementando un'API REST che dovrebbe supportare richieste interdominio. Usando CORS voglio raggiungere questo obiettivo. Quasi tutte le mie richieste sono "non semplici", ovvero per tutte le richieste non GET una richiesta di preflight deve essere inviata dal browser.Preflight per la cache non in cromo
Per limitare la quantità di richieste di preflight/OPTIONS, provo a lasciare che il browser memorizzi le richieste OPTIONS. Questo sembra funzionare in Firefox e Safari, ma non in Chrome. So che Chrome memorizzerà solo le richieste di verifica preliminare in cache per soli 10 minuti, ma nel mio caso sembra che non ci sia alcun caching.
Queste sono le richieste HTTP e le risposte inviati/ricevuti da Chrome:
Richiesta:
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
Risposta:
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
hai 'Pragma: no-cache' e' Cache-Control: no-cache' impostato nella richiesta .. prova a rimuovere quelli dalla richiesta – harishr
Sì, ma non li imposto esplicitamente. Chrome invia quelli nella richiesta, come faccio a rimuoverlo? – user23127
Ho controllato le mie richieste API in chrome e quell'intestazione della richiesta non è stata passata. Quindi dubito che chrome sia di per sè le impostazioni, è necessario controllare il codice da dove vengono impostati – harishr