2010-01-15 22 views
23

Giả sử bạn viết một máy chủ HTTP/máy khách, mức độ quan trọng của nó là hỗ trợ HTTP/1.0 như thế nào? Nó vẫn được sử dụng bất cứ nơi nào ngày nay?HTTP/1.0 có đang được sử dụng không?

Edit: Tôi ít quan tâm đến usefullness/tầm quan trọng của HTTP/1.0, mục đích chứ không phải số lượng phần mềm rằng thực sự sử dụng nó cho những người không-nội bộ (kiểm tra đơn vị được sử dụng nội bộ, ví dụ) trong thế giới thực (trình duyệt, rô bốt, điện thoại thông minh/điện thoại ngu ngốc, v.v ...).

+0

JWZ đã viết một đơn giản 1.0-client-to -1.1-proxy máy chủ mà bạn có thể quan tâm: http://www.jwz.org/hacks/http10proxy.pl – Ken

Trả lời

7

tôi sử dụng nó mọi lúc khi tôi telnet-ing đến một máy chủ để xác minh kết nối hoặc tìm ra lý do tại sao nó không làm việc:

$ telnet 192.168.1.1 80 
GET/HTTP/1.0\r\n 
\r\n 

... 

(Bởi vì thực hiện một yêu cầu 1.0 không đòi hỏi mà tôi cung cấp thêm bất kỳ tiêu đề nào).

+10

Lưu ý rằng điều này sẽ không hoạt động trên bất kỳ máy chủ ảo nào; và không khó để thực hiện kết nối HTTP 1.1, chỉ cần thêm một tiêu đề 'Host:' duy nhất và bạn đã sẵn sàng. –

6

HTTP/1.0 rất quan trọng trong việc viết các khách hàng rất cơ bản không cần chi phí của tất cả 1.1 thứ như pipelining và những thứ phức tạp khác được yêu cầu bởi 1.1. Đăng một yêu cầu có được một phản ứng và ngắt kết nối là rất dễ dàng để mã cho. Điều này có thể hữu ích khi viết các trường hợp kiểm tra cho máy chủ của bạn mà chỉ muốn thử nghiệm chức năng ứng dụng và KHÔNG thực hiện giao thức HTTP.

Có rất nhiều trình duyệt và ứng dụng di động sử dụng 1.0 vì chúng không có không gian hoặc cần triển khai 1.1 phức tạp hơn và các vấn đề về độ trễ với kết nối không phải 3G trên điện thoại không thông minh hoàn toàn phủ nhận bất kỳ lợi ích nào của 1.1 tính năng.

Cũng có rất nhiều proxy làm suy giảm mọi thứ xuống 1.0 bất kể những gì khách hàng yêu cầu, và sau đó có vấn đề về IE.

Vì vậy, câu trả lời ngắn gọn là, cho máy chủ HTTP có mục đích chung, 1.0 rất phù hợp.

+1

"rất nhiều trình duyệt và ứng dụng dành cho thiết bị di động", "rất nhiều proxy" ....... ** mà ** nói riêng? và ý nghĩa của chúng * * (số đầu người dùng) – Pacerier

10

wget sử dụng HTTP/1.0 và vẫn tương đối phổ biến (mặc dù nó hỗ trợ một số tính năng HTTP/1.1 như tiêu đề Host:, cần thiết để truy cập bất kỳ máy chủ ảo nào).

+2

Là một phần, 'curl' sử dụng HTTP 1.1 theo mặc định. Xem http://curl.haxx.se/docs/manpage.html – mikemaccana

+0

Tôi đang sử dụng GNU Wget 1.19.2 và có vẻ như sử dụng HTTP 1.1 theo mặc định. [Wikipedia] (https://en.wikipedia.org/wiki/Wget) nói rằng HTTP 1.1 đã được thêm vào trong phiên bản 1.13. –

-2

IME đã lâu rồi kể từ khi tôi thấy yêu cầu HTTP/1.0 thực sự. (bao gồm cả thiết bị di động fuzzylollipop).

Tôi nói một yêu cầu đúng như MSIE vẫn (giả vờ) hạ xuống HTTP/1.0 theo mặc định (trừ khi yo sig trong cấu hình) khi bạn kết nối qua proxy (tất cả các yêu cầu gửi đi được gắn cờ là HTTP/1.0) - tuy nhiên nó vẫn bao gồm các tiêu đề yêu cầu cụ thể HTTP/1.1 và tôn trọng tất cả các phản hồi HTTP/1.1.

Thật kỳ lạ, IIS, trong hình ảnh phản chiếu, vui vẻ bỏ qua phiên bản HTTP (mặc dù tôi đã không thử nghiệm nhiều điều này để xem liệu chỉ thực hiện điều này cho tác nhân người dùng MSIE).

Vì vậy, do trùng hợp ngẫu nhiên, MSIE và IIS hoạt động tốt hơn nhiều với proxy so với các công cụ tuân thủ tiêu chuẩn.

C.

+4

Điều đó không hoàn toàn đúng - trước hết, mặc định được thay đổi vào năm 2006 với IE7 và các yêu cầu thứ hai, HTTP/1.0 ra khỏi WinINET sẽ không gửi các tiêu đề Accept-Encoding, và nếu bạn gửi trả lời nén lại, WinINET sẽ từ chối giải nén nó. – EricLaw

9

Một số hợp lý của các máy chủ sẽ cố tình trở HTTP/1.0 phản ứng vì một số (cũ) trình duyệt sẽ đủ khả năng một HTTP/1.0 máy chủ giới hạn kết nối cao hơn so với giới hạn 2 kết nối đối với HTTP/1.1 các kết nối liên tục.

Nhưng nói chung, hầu hết các triển khai "HTTP/1.0" thực sự chỉ là một số phiên bản giới hạn của việc triển khai HTTP/1.1 và nhiều HTTP/1.1 triển khai không thực sự hỗ trợ một số tính năng của phiên bản đó (ví dụ: đặc biệt là pipelining).

7

Nhìn vào này bản thân mình cho các mục đích khác:.

"HTTP/1.0 được sử dụng bởi proxy, một số khách hàng điện thoại di động, và IE khi cấu hình để sử dụng một proxy Vì vậy, 1.0 dường như vẫn chiếm một không phải là % lưu lượng truy cập nhỏ trên web tổng thể. ... Có, có rất nhiều khách hàng 1.0 vẫn ở ngoài đó. "

Nguồn (July 2009): http://groups.google.com/group/erlang-programming/msg/08f6b72d5156ef74

:-(

Cập nhật (tháng 3 năm 2011):

Nếu bạn đang đi để xây dựng một thingy client/server, làm cho khách hàng sử dụng HTTP/1.1, và làm cho máy chủ chấp nhận cả 1.1 và 1.0 Làm phát triển web, đó là PITA để khách hàng cố gắng tải trang không có tiêu đề Máy chủ, vì tôi không có cách nào để biết trang web nào tôi phải tải: - SVì vậy, bạn tốt hơn không xây dựng một khách hàng như thế ;-)

7

Tính đến năm 2016, bạn sẽ nghĩ rằng sự nổi bật sẽ giảm nhiều hơn kể từ khi 1.1 được giới thiệu vào năm 1999 vì vậy đây là khoảng 17 năm.

Tôi đã kiểm tra 7.727.198 dòng bản ghi để xem bao nhiêu phần trăm tôi nhận được của HTTP/1.0HTTP/1.1:

Protocol Counts  Percent 
-------------------------------- 
HTTP/0.9   0  0.00% 
HTTP/1.0 1,636,187 21.17% (all) 
HTTP/1.0  15,415  0.20% (without the obvious robots) 
HTTP/1.1 6,091,011 78.83% 
HTTP/2    0  0.00% 

Từ những gì tôi có thể thấy, hầu hết các HTTP/1.0 là từ robot. Vì vậy, tôi đã cố gắng xóa mục nhập rõ ràng từ đó (ví dụ: Đại lý bao gồm rô bốt từ, bot, slurp, v.v.)

Vì vậy, có vẻ như số lượng người dùng cuối vẫn bị kẹt với HTTP/1.0 rất hạn chế ngày hôm nay (0,2%). Tuy nhiên, nếu bạn muốn để rô bốt kiểm tra các trang web của mình, bạn có thể cần/muốn giữ lại hoạt động HTTP/1.0. Hầu hết sẽ vẫn bao gồm tiêu đề Host: ... mặc dù chúng quảng cáo kết nối của chúng dưới dạng giao thức HTTP/1.0.

Ngoài ra, sự khác biệt giữa HTTP/1.0HTTP/1.1 rất mờ về mặt triển khai. Hầu hết mọi người đang hạnh phúc trộn cả hai. Tôi sẽ không lo lắng nhiều về việc vẫn chấp nhận/xử lý các yêu cầu HTTP/1.0.

Trên một máy chủ Tôi bắt đầu thấy HTTP/2.0 yêu cầu mà giống như thế này (có 2427 và tôi thấy 34.161.268 HTTP/1.0HTTP/1.1 yêu cầu, vì vậy 0,007%):

PRI * HTTP/2.0 
Các vấn đề liên quan