Tôi đang triển khai API REST hỗ trợ các yêu cầu miền chéo. Sử dụng CORS Tôi muốn đạt được điều này. Hầu như tất cả các yêu cầu của tôi là 'không đơn giản', nghĩa là đối với tất cả các yêu cầu không phải là yêu cầu preflight phải được gửi bởi trình duyệt.Chrome không lưu vào bộ nhớ cache preflight
Để giới hạn số lượng yêu cầu preflight/OPTIONS tôi cố gắng để bộ nhớ cache của trình duyệt yêu cầu OPTIONS. Điều này dường như hoạt động trong Firefox và Safari, nhưng không hoạt động trong Chrome. Tôi biết Chrome sẽ chỉ lưu trữ các yêu cầu preflight chỉ trong 10 phút, nhưng trong trường hợp của tôi, dường như không có bộ nhớ đệm nào diễn ra.
Đây là những yêu cầu HTTP và phản ứng gửi/nhận bởi Chrome:
Yêu cầu:
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
đáp ứng:
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
bạn có 'pragma: không cache' & 'Cache-Control: no-cache' thiết trong yêu cầu .. cố gắng loại bỏ những từ yêu cầu – harishr
Vâng, nhưng tôi không đặt chúng một cách rõ ràng. Chrome sẽ gửi những yêu cầu đó trong yêu cầu, làm cách nào để xóa nội dung này? – user23127
Tôi đã kiểm tra các yêu cầu api của tôi trong chrome và các tiêu đề yêu cầu không được thông qua .. vì vậy tôi nghi ngờ chrome của chính nó là cài đặt, bạn cần phải kiểm tra mã của bạn từ nơi họ nhận được thiết lập – harishr