The HyperText Transfer Protocol (HTTP) is a data communications protocol and acts as the foundation of the World Wide Web. After the original version was released, the functionality was extended in HTTP/1.0, and overall, it was made more versatile.
The first thing added was protocol specification information, which was included on the same line as the HTTP request method. This is required to inform the server as to what version of the protocol will be used for the transmission. At the time, the choice was between HTTP/0.9 and HTTP/1.0.
HTTP request methods
The available HTTP methods was expanded beyond HTTP GET to include both HEAD and POST. Importantly, POST was introduced to send a message from server to client, whereas previously, the communication was essentially one-way.
HTTP Status and error codes
The next addition was a status line to indicate the results of each HTTP request. Rather than have the server send a situation-based HTML file for the client to display as the result of an error, HTTP status codes were sent to indicate success and failure, leaving more responsibility to the browser. It was somewhat akin to moving away from dumb terminals to more interactive workstations.
The idea of including HTTP headers was also part of the HTTP/1.0 specification, which allowed for a richer and more flexible message, regardless of whether it was a HTTP request or HTTP response. Importantly, the HTTP headers allowed for Caching, which improved response time, Authorization, and support for different types of files. HTTP headers were also used to incorporate meta information such as information about the server and the user-client, as well as the message itself.
Support for different filetypes
Another important way that the protocol became more flexible is that non-HTML files can be transmitted. The Content-Type HTTP header was created to identify the contents of the message body.
In the following example, the client is connected to a server and requests an HTML file. The server responds with it, which includes a link to an image. This results in a subsequent HTTP Connection and HTTP request for the image data to be retrieved.
GET /index.html HTTP/1.0 User-Agent: NCSA_Mosaic/2.0 (Windows 3.1)
200 OK Date: Sun, 01 Jan 1995 12:01:00 GMT Server: CERN/3.0 libwww/2.17 Content-Type: text/html <html> Welcome to the <img src="/logo.gif"> example.re homepage! </html>
Second connection request (to fetch the image)
GET /logo.gif HTTP/1.0 User-Agent: NCSA_Mosaic/2.0 (Windows 3.1)
200 OK Date: Sun, 01 Jan 1995 12:01:01 GMT Server: CERN/3.0 libwww/2.17 Content-Type: text/gif <Encoded data of logo.gif>
HTTP/1.0 introduced HTTP status codes to indicate failure or success, HTTP header fields for metadata, and bidirectional data transmission using the HTTP POST method. Together, these enhancements made HTTP much more versatile.