| Browser To Server | Speeding Up HTTP |
| Server To Browser | response codes |
| Language & Charset | Learning More |
| Sample Code | Links |
| Under the Hood |
| HTTP Headers that Browsers Send Servers | ||
|---|---|---|
| Field | Typical Value | Meaning |
| User-Agent: | Java.exe default ⇒ Java/1.6.0_17
Last revised/verified: 2009-09-28
Opera ⇒ Opera/9.80 (Windows NT 6.0; U; en) Presto/2.2.15 Version/10.00 Last revised/verified: 2009-09-28 Firefox ⇒ Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.4) Gecko/20091016 Firefox/3.5.4 (.NET CLR 3.5.30729) Last revised/verified: 2009-10-27 Sea Monkey ⇒ Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.4) Gecko/20091017 SeaMonkey/2.0 Last revised/verified: 2009-10-27 Flock ⇒ Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.13) Gecko/2009080717 Firefox/3.0.13 Last revised/verified: 2009-09-28 Safari ⇒ Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/531.9 (KHTML, like Gecko) Version/4.0.3 Safari/531.9.1 Last revised/verified: 2009-09-28 Avant ⇒ Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; Avant Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.40729; .NET CLR 3.0.30729) Last revised/verified: 2009-09-28 Chrome ⇒ Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Last revised/verified: 2009-09-28 IE 8 ⇒ Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729) Last revised/verified: 2009-09-28 IE 7 ⇒ Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506) Netscape ⇒ Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.5pre) Gecko/20070710 firefox/2.0.0.4 Navigator/9.0b2 |
Which browser being used/simulated |
| Host: | localhost:8081 | destination url, server:port. |
| Accept: | application/xhtml+voice+xml;version=1.2, application/x-xhtml+voice+xml;version=1.2,
application/x-shockwave-flash,text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,text/css,*/*;q=0.1
or text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 |
MIME types the browser is willing to accept. The encoding of this field, is described in RFC 2616 section 14. and in the more friendly w3.org version. Roughly the q numbers define your preference. The higher the number the higher the preference. Default is 1. The q applies to the preceding MIME. You set this with URLConnection. setRequestProperty( "Accept", …); not "accept" as the Sun docs erroneously suggest. |
| Accept-Language: | en | Language the browser in willing to accept. |
| Accept-Charset: | windows-1252, utf-8, utf-16, iso-8859-1;q=0.6, *;q=0.1 | Character set encodings the browser is willing to accept. |
| Accept-Encoding: | deflate, gzip, x-gzip, identity, *;q=0 | compression schemes the browser is willing to accept.
|
| Referer: | http://mindprod.com/jgloss/http.html | the web page that contained the link that triggered this request. |
| If-Modified-Since: | Mon, 06 Feb 2006 01:24:23 GMT | Only bother with the request if the file has changed since this date, otherwise the browser already has a copy in cache. |
| Connection: | Keep-Alive | requests server keep the socket open for further messages. It is true by default in HTTP 1.1, so you don’t need to use it. |
| Keep-Alive: | 300 | requests server keep the socket open 300 seconds for further messages. |
| Pragma: | no-cache | requests getting a fresh copy from the server, rather than from a cache. |
| Content-Type: | application/x-www-form-urlencoded | MIME type of the payload to the server. |
| Content-Length: | 114 | length in encoded bytes of the payload to the server. |
Beware using HttpURLConnection.setFollowRedirects( false); This reportedly causes trouble in recent JDKs. When it is set true, it will not automatically follow responses with: <META HTTP-EQUIV="Refresh".
| HTTP Headers that Servers Send Browsers | ||
|---|---|---|
| Field | Typical Value | Meaning |
| Server: | Apache/2.0.55 (NETWARE) mod_perl/1.99_12 Perl/v5.8.4 | Which server software being used. |
| Accept-Ranges: | bytes | Inform the browser that the server supports downloading just parts of files, as small as a byte granularity. |
| Keep-Alive: | timeout=15, max=99 | how long to keep this socket open for more messages. |
| Connection: | Keep-Alive | requests browser keep the socket open for further messages. |
| Content-Type: | image/png | MIME type of the payload from the server. Also used to encode the CharSet encoding, e. g. Content-Type: text/html; charset=utf-8 |
| Content-Encoding: | gzip | gzip or x-zip or deflate or not present if no compression. |
| Content-disposition: | attachment;filename="smile.png" | Server suggests a filename to save this download under. |
| Content-Length: | 842 | length in encoded bytes of the payload from the server. |
In the real world, the conversations between browser/client and server are much more complicated as slipshod than you might suppose. Each query often results is a flurry of permanent and temporary redirects back and forth. Each element on an HTML page must be requested independently. Sometimes servers will send back a fail error code, then send the page anyway. Or they will send a 404 with an OK text response code. Sometimes servers refuse HEAD requests, but accept the equivalent GET. Sometimes servers send back https: in response to an http: request. Sometimes servers give you a totally different page from the one you requested and don’t tell you the one you wanted is on longer available. Sometimes servers rediret to localhost, or send back gibberish messages. Sometimes a server won’t send you a page if you have recently previously requested it. They expect you to have cached it. Browsers just do their best to muddle through. When you start emulating browsers with code, you get pretty flaky programs.
<!-- embedding language and charset inside an HTML document --> <meta http-equiv="Content-Language" content="en"> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">Embedding this information makes it easier for web page authors to control, even if it makes finding the information slightly more difficult for the browser.
IE 5 & 6 had a bug involving javascript and gzip encoding. Microsoft failed to change the User-Agent string after the bug fix, and thus the server does not have enough information to determine whether or not the browser is defective.
RFC 2049 MIME part 2, non ASCII.
RFC 1945 HTTP 1.0 specification.
RFC 2045 MIME Part One: Format of Internet Message Bodies, specifies the various headers used to describe the structure of MIME messages.
RFC 2046 MIME Part Two: Media Types, describes the general structure of the MIME media typing system and defines an initial set of media types.
RFC 2047 MIME Part Three: Message Header Extensions for non-ASCII text
RFC 4288 and RFC 4289 MIME Part Four: Registration Procedures
RFC 2049 MIME Part Five: Conformance Criteria and Examples, Provides some illustrative examples of MIME message formats
RFC 2183 MIME Part Five: Conformance Criteria and HTTP Content-Disposition
RFC 2616 updates the HTTP protocol
RFC 2617: for details on how to send username and password in http headers to restrict access
RFC 2183 MIME Part Five: Conformance Criteria and HTTP Content-Disposition
| You can get the freshest copy of this page from: | or possibly from your local J: drive (Java virtual drive/mindprod.com website mirror) | |
| http://mindprod.com/jgloss/http.html | J:\mindprod\jgloss\http.html | |
![]() | ||
| Canadian Mind Products | ||
| mindprod.com IP:[65.110.21.43] | ||
| view Blog | Your face IP:[38.107.191.108] | |
| Feedback | You are visitor number 20,850. | |