简体   繁体   中英

Is HTTP/1.0 still in use?

Say one is to write an HTTP server/client, how important is it to support HTTP/1.0? Is it still used anywhere nowdays?

Edit: I'm less concerned with the usefullness/importance of HTTP/1.0, rather the amount of software that actually uses it for non-internal (unit testing being internal use, for example) purposes in the real world (browsers, robots, smartphones/stupidphones, etc...).

wget使用HTTP / 1.0,它仍然相对流行(虽然它支持一些HTTP / 1.1功能,如Host: header,这是访问任何虚拟主机所必需的)。

As of 2016, you would think that the prominence would decline even more since 1.1 was introduced in 1999 so this is about 17 years.

I checked 7,727,198 lines of logs to see what percent I get of HTTP/1.0 and HTTP/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%

From what I can see, most of the HTTP/1.0 are from robots. So I tried to remove entries that were obviously from such (ie Agent including the word robot, bot, slurp, etc.)

So it looks like the amount of end users still stuck with HTTP/1.0 is very limited today (0.2%). However, if you want to let robots check out your websites, you may need/want to keep HTTP/1.0 operational. Most will anyway include the Host: ... header even though they advertise their connection as an HTTP/1.0 protocol.

Also, the differences between HTTP/1.0 and HTTP/1.1 is very blurry in terms of implementation. Most people are happily mixing both. I would not worry too much about still accepting/handling HTTP/1.0 requests.

On another server I am starting to see HTTP/2.0 requests that look like this (got 2427 and I see 34,161,268 HTTP/1.0 and HTTP/1.1 requests, so 0.007%):

PRI * HTTP/2.0

A fair number of servers will deliberately return HTTP/1.0 responses because some (older) browsers will afford a HTTP/1.0 server a higher connection limit than the 2-connection limit imposed for HTTP/1.1's persistent connections.

But in general, most "HTTP/1.0" implementations are really just slightly limited versions of the HTTP/1.1 implementations, and many HTTP/1.1 implementations don't really support some features of that version (eg pipelining in particular).

I use it all the time when I'm telnet-ing to a server to verify connectivity or figure out why it's not working:

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

... 

(Because making a 1.0 request doesn't require that I provide any extra headers).

HTTP/1.0 is very important in writing very basic clients that don't need the overhead of all the 1.1 things like pipelining and other complicated things required by 1.1. Post a request get a response and disconnect is very easy to code for. This might be useful in writing test cases for your server that just want to test the application functionality and NOT the HTTP protocol implementation.

There are lots of mobile browsers and applications that use 1.0 because they don't have the space or need for more sophisticated 1.1 implementations, and the latency issues with non-3G connections on non-smart phones completely negates any benefits of 1.1 features.

There are also lots of proxies that degrade everything to 1.0 regardless of what the client asks for, and then there is IE issues.

So the short answer is, for a general purpose HTTP server, 1.0 is very relevant.

Looking into this myself for other purposes:

"HTTP/1.0 is in use by proxies, some mobile clients, and IE when configured to use a proxy. So 1.0 appears to still account for a non- trivial % of traffic on the web overall. ... Yes, there are many 1.0 clients still out there."

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

:-(

Update (March 2011):

If you are going to build a client/server thingy, make the client use HTTP/1.1, and make the server accept both 1.1 and 1.0. Doing web-development, it is a PITA to get clients trying to load a page without the Host header, because I have no way to know which site I am supposed to load :-S So you better don't build a client like that ;-)

IME its been a very long time since I've seen a true HTTP/1.0 request. (including mobile devices fuzzylollipop).

I say a true request as MSIE still (pretends) to downgrade to HTTP/1.0 by default (unless yo sig in the config) when you connect via a proxy (all the outgoing requests are flagged as HTTP/1.0) - however it still includes HTTP/1.1 specific request headers and respects all the HTTP/1.1 responses.

Curiously, IIS, in a mirror image, happily ignores the HTTP version (although I've not experimented much with this to see if only does this for MSIE user agents).

So by curious coincidence, MSIE and IIS work much better with proxies than with standards-compliant tools.

C.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM