2011-01-25 52 views
18

Chúng tôi thường gặp một số vấn đề về khả năng tương tác trên Web. Một trong những vấn đề này đối với nhà cung cấp trình duyệt bị đánh vần sai tiêu đề HTTP Connection. Các lỗi phổ biến nhất được đưa ra bởi hai hình thức này.Tiêu đề HTTP tiêu đề và nnCoection

nnCoection: 
Cneonction: 

Đã có một số bài viết về điều này, bao gồm Fun with HTTP headers. Thường thì nó xảy ra theo thời gian, rồi biến mất. Dường như một số trong số chúng được tạo bởi các bộ cân bằng tải như this example: NetScaler Appliance.

Bạn có biết bất kỳ trường hợp phần cứng hoặc phần mềm nào khác tạo ra các sự cố này không?

Cập nhật Đây là ví dụ trong số những trang web khác không gửi lại tiêu đề HTTP Connection tốt.

curl -sI ehg-nokiafin.hitbox.com 
HTTP/1.1 200 OK 
Date: Tue, 25 Jan 2011 20:35:45 GMT 
Server: Hitbox Gateway 9.3.6-rc1 
P3P: policyref="/w3c/p3p.xml", CP="NOI DSP LAW NID PSA ADM OUR IND NAV COM" 
Cneonction: close 
Pragma: no-cache 
Cache-Control: max-age=0, private, proxy-revalidate 
Expires: Tue, 25 Jan 2011 20:35:46 GMT 
Content-Type: text/plain 
Content-Length: 23 

cập nhật 2011-01-26

Trên Amazon diễn đàn về AWS, có một thread về nnCoection. Một bình luận nói:

FYI, lý do nó viết sai từ kết nối là để internet check-sum (một số tiền đơn giản) vẫn cho biết thêm lên, cách này sự thay đổi có thể xảy ra tại mức gói dữ liệu . Nếu hoàn toàn xóa tiêu đề, nó sẽ phải ngăn chuyển tiếp phản hồi cho đến khi tiêu đề hoàn toàn được đọc, vì vậy, có thể viết lại tiêu đề, tính lại tổng kiểm tra và sau đó gửi đi.

với

sum(ord(c) for c in "Connection") 

sum(ord(c) for c in "nnCoection") 

cả mang đến cho 1040

Trả lời

9

Bạn có chắc chắn nó là một thực tế vấn đề? Bài báo liên kết gợi ý rằng các loại tiêu đề này "sai chính tả về mục đích" sao cho bộ cân bằng tải, proxy ngược hoặc hộp trung gian khác có thể đánh bại mong muốn của máy chủ rằng kết nối được giữ nguyên, không phải theo dõi đồng bằng trong vị trí dòng TCP trên cuộc sống của kết nối. Một cái gì đó như thế này thực sự có thể là cần thiết để mang lại một máy chủ bị downed và phục hồi trở lại hoạt động nhiệm vụ, bằng cách buộc các kết nối được giữ cho các máy chủ khác để di chuyển đến một trong những mang trực tuyến.

Nếu bạn có giao thức phụ thuộc vào HTTP Connection: keep-alive để hoạt động (cough), có thể bạn đang làm sai.

+0

trong trường hợp bộ cân bằng tải, có tiêu đề kết nối thứ hai. nhưng có rất nhiều trường hợp không có gì khác được gửi đi. Tôi sẽ chỉnh sửa bài đăng để đưa ra một ví dụ. – karlcow

+0

Có vẻ tốt. Tôi nghĩ rằng đây là lỗi chính tả bởi các bộ cân bằng tải TCP để a) Khách hàng sẽ bỏ qua chúng và b) Họ không phải tính toán lại tổng kiểm tra. Đây là một cách cố ý, mặc dù khá đáng sợ để làm điều đó. Tôi đã thấy nó trước đây trong các trường hợp khác. – MarkR

+0

@MarkR Điểm tốt về tổng kiểm tra.Cả hai lỗi chính tả là kết quả của việc hoán đổi các từ 16 bit liền kề và từ nào được sử dụng có khả năng phụ thuộc vào việc chữ C ban đầu có nằm trên một ranh giới từ hay không; vì TCP sử dụng tổng kiểm tra bổ sung của các từ 16 bit, việc trao đổi hai từ 16 bit sẽ không làm mất hiệu lực tổng kiểm tra. Mặt khác, bạn có thể sẽ không thấy những shenanigans như vậy chơi với HTTPS. –