Điểm:0

HTTP_IF_NONE_MATCH bị thiếu ở phía máy chủ với Chrome yêu cầu NGINX

lá cờ ke

tôi đang cố gắng thêm etag xác minh bộ nhớ cache dựa trên ứng dụng web mà tôi đã phát triển chạy trên Apache thông qua proxy ngược NGINX. Ứng dụng web được viết bằng Perl. Trong tập lệnh Perl, tôi kiểm tra $ENV{'HTTP_IF_NONE_MATCH'} tiêu đề và sau đó kiểm tra etag trong đó, nếu nó tồn tại. Nếu tôi truy cập ứng dụng qua cURL, nó sẽ hoạt động:

timothybutler@timothys-MacBook-Pro ~ % curl -I https://server/resource/podcast/20211101.mp3
HTTP/1.1 200 OK
Máy chủ: nginx/1.21.4
Ngày: T6, 12 tháng 11 năm 2021 18:06:37 GMT
Loại nội dung: âm thanh/mpeg
Độ dài nội dung: 16665729
Kết nối: giữ nguyên
Kiểm soát thay thế: không có bộ đệm
Kiểm soát bộ đệm: private,max-age=864000
Từ khóa: "1635825322"

Cho rằng etag quay lại qua cURL, tôi nhận được kết quả như mong đợi:

timothybutler@timothys-MacBook-Pro ~ % curl -H 'If-None-Match: "1635825322"' -I https://server/resource/podcast/20211101.mp3
HTTP/1.1 304 Không được sửa đổi
Máy chủ: nginx/1.21.4
Ngày: T6, 12 tháng 11 năm 2021 18:19:29 GMT
Kết nối: giữ nguyên
Kiểm soát bộ đệm: riêng tư, tuổi tối đa=864000
Từ khóa: "1635825322"

Tuy nhiên, quá trình này bị hỏng nếu tôi dùng thử trong Chrome. Báo cáo Chrome đang gửi Nếu-Không-Khớp: "1635825322" là một trong những tiêu đề khi tôi làm mới trang, nhưng máy chủ của tôi không đặt HTTP_IF_NONE_MATCH biến môi trường cho yêu cầu đó trái ngược với yêu cầu đến qua cURL. Nếu tôi kết xuất tất cả hàm băm %ENV, If-Match-None tiêu đề và của nó etag đơn giản là không xuất hiện dưới bất kỳ hình thức nào khi Chrome đưa ra yêu cầu.

Gerard H. Pille avatar
lá cờ in
Sử dụng tcpdump để tìm ra ai đã bỏ nó, Nginx hay Apache. Bạn đã bảo Nginx chuyển nó qua chưa? Ồ, và tại sao bạn lại đặt một proxy ngược trước một proxy ngược?
lá cờ ke
@GerardH.Pille Tôi thực sự không có bất kỳ kinh nghiệm nào với tcpdump -- bạn có thể cung cấp cho tôi đề xuất tốt về: cờ để xem nội dung này không? Đối với NGINX, nó đang phục vụ nội dung tĩnh cho trang web, trong khi tôi đang sử dụng Apache để sinh ra các quy trình FastCGI cho Perl. Tôi đã gặp phải một số vấn đề khi cố gắng để FastCGI xuất hiện đúng cách ngay trong NGINX.
Gerard H. Pille avatar
lá cờ in
Trong trường hợp đó, bạn nên để Apache xử lý cả nội dung tĩnh - nhưng tôi khá chắc chắn rằng Nginx có thể xử lý tất cả những gì bạn cần. Hãy xem các ví dụ trong trang thủ công của tcpdump. IIRC, tôi sẽ chạy "tcpdump -A -s0" trên cổng mà Apache đang lắng nghe, để xem liệu "if-none-match" có còn ở đó không. Nhưng: "Bạn đã bảo Nginx vượt qua nó chưa?"

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.