Làm cách nào để thuyết phục Firefox (3.0.1, nếu có vấn đề) gửi tiêu đề If-Modified-Since trong yêu cầu HTTPS? Nó sẽ gửi tiêu đề nếu yêu cầu sử dụng đồng bằng HTTP và máy chủ của tôi dutifully vinh danh nó. Nhưng khi tôi yêu cầu cùng một tài nguyên từ cùng một máy chủ bằng HTTPS thay vào đó (tức là, chỉ cần thay đổi http: // trong URL thành https: //) thì Firefox không gửi tiêu đề If-Modified-Since. Hành vi này có được yêu cầu bởi thông số SSL hay gì đó không?Thuyết phục Firefox gửi tiêu đề If-Modified-Since qua HTTPS
Dưới đây là một số ví dụ HTTP và HTTPS cặp request/response, kéo sử dụng phần mở rộng Live HTTP Headers Firefox, với một số khác biệt in đậm:
yêu cầu HTTP/response:
http://myserver.com:30000/scripts/site.js GET /scripts/site.js HTTP/1.1 Host: myserver.com:30000 User-Agent: Mozilla/5.0 (...) Gecko/2008070206 Firefox/3.0.1 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive If-Modified-Since: Tue, 19 Aug 2008 15:57:30 GMT If-None-Match: "a0501d1-300a-454d22526ae80"-gzip Cache-Control: max-age=0 HTTP/1.x 304 Not Modified Date: Tue, 19 Aug 2008 15:59:23 GMT Server: Apache/2.2.8 (Unix) mod_ssl/2.2.8 OpenSSL/0.9.8 Connection: Keep-Alive Keep-Alive: timeout=5, max=99 Etag: "a0501d1-300a-454d22526ae80"-gzip
HTTPS yêu cầu/phản hồi:
https://myserver.com:30001/scripts/site.js GET /scripts/site.js HTTP/1.1 Host: myserver.com:30001 User-Agent: Mozilla/5.0 (...) Gecko/2008070206 Firefox/3.0.1 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive HTTP/1.x 200 OK Date: Tue, 19 Aug 2008 16:00:14 GMT Server: Apache/2.2.8 (Unix) mod_ssl/2.2.8 OpenSSL/0.9.8 Last-Modified: Tue, 19 Aug 2008 15:57:30 GMT Etag: "a0501d1-300a-454d22526ae80"-gzip Accept-Ranges: bytes Content-Encoding: gzip Content-Length: 3766 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: text/javascript
CẬP NHẬT: Đặt số browser.cache.disk_cache_ssl
thành sự thật (có nghĩa là vì Nickolay chỉ ra, vẫn còn bộ nhớ cache). Thêm tiêu đề "Cache-control: public" vào phản hồi cũng đã hoạt động. Cảm ơn!
Chủ yếu là đúng, nhưng trong các phiên bản hiện tại của FF, HTTPS Responses * được lưu trong bộ nhớ cache NẾU kiểm soát bộ nhớ cache: công khai được gửi. – EricLaw
Vâng, đó là lý do tại sao tôi đề nghị đầu tiên kiểm tra nếu đọc mã của tôi là chính xác bằng cách lật pref và thử nghiệm, sau đó làm cho bộ nhớ cache của trình duyệt trang HTTP được phân phát bằng cách gửi tiêu đề. – Nickolay