HTTP

HTTP簡介
1.WEB瀏覽器與WEB服務器之間的一問一答的交互過程必須遵循一定的規則,這個規則就是HTTP協議。
2.HTTP是hypertext tranfer protocol(超文本傳輸協議)的簡寫,它是TCP/IP協議幾種的一個應用層
協議,用於定義WEB瀏覽器與WEB服務器之間交換數據的過程以及數據本身的格式。
3.HTTP協議的版本
HTTP/1.0、HTTP/1.1、HTTP-NG
4.深入理解HTTP協議,對管理和維護複雜的WEB站點、開發具有特殊用途的WEB服務器程序具有直接影響。

HTTP1.0的會話方式
1.四個步驟:建立連接、發出請求信息、回送響應信息、關閉連接。
2.瀏覽器與WEB服務器的連接過程是短暫的,每次連接只處理一個請求和響應。對每一個頁面的訪問,
瀏覽器與WEB服務器都有建立一次單獨的連接
3.瀏覽器到WEB服務器之間的所有通訊都是完全獨立分開的請求和響應對。
4.支持代理:
請求鏈-------------------------------------------------------------------------->
WEB瀏覽器------------------------代理服務器----------------------------WEB服務器
<--------------------------------------------------------------------------- 響應鏈

瀏覽器訪問多圖網頁的過程(略)

HTTP1.1與HTTP1.0的比較
1.HTTP1.1的特點
在一個TCP連接上可以傳送多個HTTP請求和響應
多個請求和響應可以重疊進行
增加了更多的請求頭和響應頭

HTTP請求消息
1.請求消息的結構
一個請求行、若干消息頭、以及實體內容,其中的一些消息頭和實體內容都是可選的,消息頭和實體內容之間要用空行隔開。
舉例:
GET /books/java.html HTTP/1.1 //請求行
Aceept: */* /*
Aceept-Language: en-us
Connection: Keep-Alive
Host: localhost 多個消息頭
Referer: http://localhost/links.asp
User-Agent: Mozilla/4.0
Accept-Encoding: gzip,deflate */
//一個空行

HTTP響應消息
1.響應消息的結構:
一個狀態行、若干消息頭、以及實體內容,其中的一些消息頭和實體內容都是可選的,消息頭和實體內容之間要用空行隔開。
舉例:
HTTP/1.1 200 OK //狀態行
Server: Mircrosoft-IIS/5.0 /*
Date: Thu, 13 Jul 2000 05:46:53 GMT
Content-Length: 2291 多個消息頭
Content-Type: text/html
Cache-control: private */
// 一個空行
<HTML> /*
<BODY> 實體內容
.............. */

HTTP消息---->其它細節
1.響應消息的實體內容就是網頁文件的內容,也就是在瀏覽器中使用查看源文件的方式所看到的內容。
2.一個使用GET方式的請求消息中不能包含實體內容,只有使用POST、PUT和DELETE方式的請求消息中纔可以包含實體內容。
3.對於HTTP1.1來說,如果HTTP消息中包括實體內容,且沒有采用chunked傳輸編碼方式,那麼消息頭部分必須包含內容長度的字段,
否則,客戶和服務程序就無法知道實體內容何時結束。
4.在HTTP協議中,還可以使用簡單的請求消息和響應消息,它們都沒有消息頭部分。簡單的請求消息只能用於GET方式,
且請求行中不用指定HTTP版本號。對於簡單的請求消息,服務器返回簡單的響應消息,簡單的響應消息中只返回實體內容。

HTTP消息頭
1.使用消息頭,可以實現HTTP客戶機與服務器之間的條件請求和應答,消息頭相當於服務器和瀏覽器之間的一些暗號指令。
2.每個消息頭包含一個頭字段名稱,然後依次是冒號、空格、值、回車和換行符。
舉例:Aceept-Language: en-us
3.消息頭字段名是不區分大小寫的,但習慣上將每個單詞的第一個字母大寫。
4.整個消息頭部分中的各行消息頭可按任何順序排列。
5.消息頭又可以分爲通用消息頭、請求頭、響應頭、實體頭等四類。
6.許多請求頭字段都允許客戶端在值部分指定多個可接受的選項,多個項之間以逗號分隔。
舉例:Aceept-Encoding: gzip, compress
7.有些頭字段可以出現多次,例如,響應消息中可以包含多個"Warning"頭字段。

請求行與狀態行
1.請求行
格式:請求方式 資源路徑 HTTP版本號<CRLF>
舉例:GET /test.html HTTP/1.1
請求方式:POST、HEAD、OPTIONS、DELETE、 TRACE、 PUT
2.狀態行
格式: HTTP版本行 狀態碼 原因敘述<CRLF>
舉例: HTTP/1.1 200 OK

使用GET和POST方式傳遞參數
1.在URL地址後面可以附加一些參數
舉例:http://www.it315.org/servlet/ParamsServlet?param1=abc?m2=xyz
2.GET方式
舉例:GET/servlet/ParamsServlet?param1=abc?m2=xyz HTTP/1.1
特點:傳送的數據量是有限制的,一般限制在1KB以下
3.POST方式
舉例:
POST /servlet/ParamsServlet HTTP/1.1
Host:
Content-Type: application/x-www-form-urlencoded
Content-Length: 28

param1=abc?m2=xyz
特點:傳送的數據量要比GET方式傳送的數據量大得多

響應狀態碼
1.響應狀態碼用於服務器對請求的各種不同處理結果和狀態,它是一個三位的十進制數。響應碼可歸爲5種類別,
使用最高位爲1到5來進行分類,如下所示:
100-199:表示成功接收請求,要求客戶端繼續提交下一次請求才能完成整個處理過程。
200-299:表示成功接收請求並已完成整個處理過程。
300-399:爲完成請求,客戶需進一步細化請求。例如,請求的資源已經移動一個新地址。
400-499:客戶端的請求有錯誤。
500-599:服務器端出現錯誤。
2.響應狀態碼---->典型情況
200(正常):表示一切正常,返回的是正常請求結果。
206(部分內容):客戶發送了一個帶有Range頭(要求服務器只返回文檔中的部分內容)的GET請求。
302/307(臨時重定向):指定被請求的文檔已被臨時移動到別處,此文檔的新URL在Location響應頭中給出。
304(未修改):表示客戶機緩存的版本是最新的,客戶機應該繼續使用它。
401(未經授權):表示客戶機訪問的是一個受口令和密碼保護的頁面,結合使用一個WWW-Authenticate響應頭
提示客戶機應重新發出一個帶有Authorization頭的請求消息。
404(找不到):服務器上不存在客戶機所請求的資源。
500(內部服務器錯誤):服務器端的CGI、ASP、JSP等程序發生錯誤。

通用消息頭
1.通用消息頭字段既能用於請求消息,也能用於響應消息,它包括一些與被傳輸的實體內容沒有關係的常用消息頭字段。
Cache-Control: no-cache (*)
Connecton: close (*)
Date: Tue, 11 Jul 2000 18:23:51 GMT
Pragma: no-cache (*)
Trailer: Date
Transfer-Encoding: chunked (*)
Upgrade: HTTP/2.0, SHTTP/1.3
Via: HTTP/1.1 Proxy1, HTTP/1.1 Proxy2
Warning: any text

請求頭
1.請求頭字段用於客戶端在請求消息中向服務器傳遞附加信息,主要包括客戶端可以接受的數據類型、壓縮方法、語言、
以及發出請求的超鏈接所屬頁面的URL地址等信息。
Aceept: text/html,image/* (*)
Aceept-Charset: ISO-8859-1,unicode-1-1 (*)
Aceept-Encoding: gzip,compress (*)
Aceept-Language: en-gb,zh-cn (*)
Authorization: Basic enh4OjEyMzQ1Ng== (*)
Expect: 100-continue
From: [email protected]
Host: www.it315.org:80 (*)
If-Match: "xyzzy","r2d2xxxx"
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT (*)
If-None-Match: "xyzzy","r2d2xxxs"
If-Range: Tue,11 Jue 2000 18:23:51 GMT
If-Unmodified-Since: Tue,11 Jul 2000 18:23:51 GMT
Max-Farwards: 1
Proxy-Authorization: Basic enh4OjEyMzQ1Ng==
Range: bytes=100-599
Referer: http://www.it315.org/index.jsp (*)
TE: trailers,deflate
User-Agent: Mozilla/4.0(compatible;MSIE 5.5;Window NT 5.0) (*)

實體頭
1.實體頭用作實體內容的元消息,描述了實體內容的屬性,包括實體信息類型、長度、壓縮方法、最後一次修改時間、數據有效期等。
Allow: GET,POST
Content-Encoding: gzip (*)
Content-Language: zh-cn (*)
Content-Length: 80 (*)
Content-Location: http://www.it315.org/java_cn.html
Content-MD5: JIOEJFENEWIOFJEONFNWEIFJOE==
Content-Range: bytes 2543-4532/7898 (*)
Comtent-Type: text/html; charset=GB2312 (*)
Expires: Tue, 11 Jul 2000 18:23:51 GMT (*)
Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT (*)

擴展頭
1.在HTTP消息中,也可以使用一些HTTP1.1正式規範裏沒有定義的頭字段,這些頭字段統稱爲自定義的HTTP頭或擴展頭,
它們通常被當作是一種實體頭處理。
2.現在流行的瀏覽器實際上都支持Cookie、Set-Cookie、Refresh和Content-Disposition等幾個常用的擴展頭字段。
3.Refresh頭字段
Refresh: 1
Refresh: 1;url=http://www.google.cn
4.Content-Disposition頭字段
Content-Type: application/octet-stream
Content-Disposition: attachment; filemane=aaa.zip
發佈了41 篇原創文章 · 獲贊 2 · 訪問量 2983
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章