The Hypertext Transfer Protocol (HTTP) is an 
application-level protocol with the lightness and speed necessary for 
distributed, collaborative, hypermedia information systems. It is a 
generic, stateless, object-oriented protocol which can be used for many 
tasks, such as name servers and distributed object management systems, 
through extension of its request methods (commands). A feature of HTTP 
is the typing and negotiation of data representation, allowing systems 
to be built independently of the data being transferred.
In the general form HTTP is the protocol that 
clients and servers use to communicate on the Web.
HTTP is the underlying mechanism on which CGI operates, and it directly 
determines what you can and cannot send or receive via CGI.
HTTP Properties
A comprehensive addressing scheme
The HTTP protocol uses the concept of reference 
provided by the Universal Resource Identifier (URI) as a location (URL) 
or name (URN), for indicating the resource on which a method is to be 
applied. When an HTML hyperlink is composed, the URL (Uniform Resource 
Locator) is of the general form http://host:port-number/path/file.html. 
More generally, a URL reference is of the type 
service://host/file.file-extension and in this way, the HTTP protocol 
can subsume the more basic Internet services.
Client-Server Architecture
The HTTP protocol is based on a request/response 
paradigm. The communication generally takes place over a TCP/IP 
connection on the Internet. The default port is 80, but other ports can 
be used. This does not preclude the HTTP/1.0 protocol from being 
implemented on top of any other protocol on the Internet, so long as 
reliability can be guaranteed.
The HTTP protocol is connectionless and stateless
After the server has responded to the client's 
request, the connection between client and server is dropped and 
forgotten. There is no "memory" between client connections. The pure 
HTTP server implementation treats every request as if it was brand-new, 
i.e. without context.
An extensible and open representation for data types
HTTP uses Internet Media Types (formerly referred
 to as MIME Content-Types) to provide open and extensible data typing 
and type negotiation. When the HTTP Server transmits information back to
 the client, it includes a MIME-like (Multipart Internet Mail Extension)
 header to inform the client what kind of data follows the header. 
Translation then depends on the client possessing the appropriate 
utility (image viewer, movie player, etc.) corresponding to that data 
type. 
HTTP Header Fields
An HTTP transaction consists of a header followed
 optionally by an empty line and some data. The header will specify such
 things as the action required of the server, or the type of data being 
returned, or a status code.
The header lines received from the client, if 
any, are placed by the server into the CGI environment variables with 
the prefix HTTP_ followed by the header name. Any - characters in the 
header name are changed to _ characters. The server may exclude any 
headers which it has already processed, such as Authorization, 
Content-type, and Content-length.
HTTP_ACCEPT
The MIME (Multipurpose Internet Mail Extension) 
types which the client will accept, as given by HTTP headers. Other 
protocols may need to get this information from elsewhere. Each item in 
this list should be separated by commas as per the HTTP spec.
Format: type/subtype, type/subtype
HTTP_USER_AGENT
The browser the client is using to send the request. General format: software/version library/version. 
The server sends back to the client:1).A status code that indicates whether the request was successful or not. Typical error codes indicate that the requested file was not found, that the request was malformed, or that authentication is required to access the file.
2).The data itself. Since HTTP is liberal about sending documents of any format, it is ideal for transmitting multimedia such as graphics, audio, and video files.
3).It also sends back information about the object being returned.
Fields are:
Content-Type
Indicates the media type of the data sent to the 
recipient or, in the case of the HEAD method, the media type that would 
have been sent had the request been a GET. 
Content-Type: text/html
Date
The date and time at which the message was originated.
Date: Tue, 15 Nov 1994 08:12:31 GMT
Expires
The date after which the information in the 
document ceases to be valid. Caching clients, including proxies, must 
not cache this copy of the resource beyond the date given, unless its 
status has been updated by a later check of the origin server.
Expires: Thu, 01 Dec 1994 16:00:00 GMT
From
An Internet e-mail address for the human user who
 controls the requesting user agent. The request is being performed on 
behalf of the person given, who accepts responsibility for the method 
performed. Robot agents should include this header so that the person 
responsible for running the robot can be contacted if problems occur on 
the receiving end.
From: Stars@WDVL.com
If-Modified-Since
Used with the GET method to make it conditional: 
if the requested resource has not been modified since the time specified
 in this field, a copy of the resource will not be returned from the 
server; instead, a 304 (not modified) response will be returned without 
any data.
If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT
Last-Modified
Indicates the date and time at which the sender 
believes the resource was last modified. Useful for clients that 
eliminate unnecessary transfers by using caching.
Last-Modified: Tue, 15 Nov 1994 12:45:26 GMT
Location
The Location response header field defines the 
exact location of the resource that was identified by the request URI. 
If the value is a full URL, the server returns a "redirect" to the 
client to retrieve the specified object directly.
Location: http://WWW.Stars.com/Tutorial/HTTP/index.html
If you want to reference another file on your own server, you should output a partial URL, such as the following:
Location: /Tutorial/HTTP/index.html
Referer
Allows the client to specify, for the server's 
benefit, the address (URI) of the resource from which the request URI 
was obtained. This allows a server to generate lists of back-links to 
resources for interest, logging, optimized caching, etc. It also allows 
obsolete or mistyped links to be traced for maintenance.
Referer: http://WWW.Stars.com/index.html
Server
The Server response header field contains information about the software used by the origin server to handle the request.
Server: CERN/3.0 libwww/2.17
User-Agent
Information about the user agent originating the 
request. This is for statistical purposes, the tracing of protocol 
violations, and automated recognition of user agents for the sake of 
tailoring responses to avoid particular user agent limitations - such as
 inability to support HTML tables.
User-Agent: CERN-LineMode/2.15 libwww/2.17b3
HTTP Request Methods
HTTP/1.0 allows an open-ended set of methods to 
be used to indicate the purpose of a request. The three most often used 
methods are GET, HEAD, and POST.
The GET Method
Information from a form using the GET method is 
appended onto the end of the action URI being requested. Your CGI 
program will receive the encoded form input in the environment variable 
QUERY_STRING.
The GET method is used to ask for a specific 
document - when you click on a hyperlink, GET is being used. GET should 
probably be used when a URL access will not change the state of a 
database (by, for example, adding or deleting information) and POST 
should be used when an access will cause a change. Many database 
searches have no visible side-effects and make ideal applications of 
query forms using GET. The semantics of the GET method changes to a 
"conditional GET" if the request message includes an If-Modified-Since 
header field. A conditional GET method requests that the identified 
resource be transferred only if it has been modified since the date 
given by the If-Modified-Since header.
The HEAD method
The HEAD method is used to ask only for 
information about a document, not for the document itself. HEAD is much 
faster than GET, as a much smaller amount of data is transferred. It's 
often used by clients who use caching, to see if the document has 
changed since it was last accessed. If it was not, then the local copy 
can be reused, otherwise the updated version must be retrieved with a 
GET.
The POST Method
This method transmits all form input information 
immediately after the requested URI. Your CGI program will receive the 
encoded form input on stdin. 
 
 
No comments:
Post a Comment