HTTP協議_入門知識

SecondDream_1017發表於2018-08-14

【什麼是HTTP協議】

對 瀏覽器客戶端 和  伺服器端之間的資料傳輸的格式規範

客戶端連上web伺服器後,若想獲得web伺服器中的某個web資源,需遵循一定的通訊格式,HTTP協議用於定義客戶端與web伺服器通訊的格式。

HTTP(hypertest transfer protocol),超文字傳輸協議,它是TCP/IP協議的一個應用層協議,用於定義WEB瀏覽器和Web伺服器之間交換資料的過程。

 

【檢視http協議的工具】

* 火狐的firebug外掛

* 谷歌的"審查元素"

* 使用系統自帶的telnet工具(遠端訪問工具)

  1. telnet localhost 8080        訪問TomCat伺服器

  2. ctrl+]   回車                     可以看回顯

  3. 輸入請求內容   

GET /MyWeb/hello.html  HTTP/1.1

Host: localhost:8080

  4. 回車,即可看到伺服器響應的資訊

請求內容無法在Talnet視窗顯示的解決方法:

telnet localhost 8080,回車進入talnet視窗,在Telnet視窗中按下“Ctrl+]”;然後,輸入“set localecho”命令,再連續按兩次Enter鍵,再輸入HTTP請求即可見。

 

 

【HTTP請求】

HTTP請求:客戶端連上伺服器後,向伺服器請求某個web資源,稱之為客戶端向伺服器傳送了一個HTTP請求。一個完整的HTTP請求包括如下內容:

一個請求行、若干請求頭、實體內容。

[ 在tomcat伺服器的webapp下新建如下web應用 ]

啟動Tomcat伺服器,在ie瀏覽器中輸入:http://localhost:8080/myWeb/hello.html

 

【請求行】

[ 請求方式 ]

請求行中的GET稱之為請求方式,請求方式有;

POST、GET、PUT、DELETE、HEAD、OPTIONS、TRACE

常用的請求方式:POST、GET

1.使用者如沒有設定,預設情況下瀏覽器向伺服器傳送的都是get請求,例如在瀏覽器直接輸地址訪問,點選超連結都是get。

2.使用者如果想把請求方式改為POST,可以通過更改表單的提交方式實現。

[ POST 和 GET的區別 ]

不管POST還是GET,都用於向伺服器請求某個WEB資源,這兩種方式的區別主要表現在資料傳輸上:

* GET請求方式:可以在請求的URL地址後以?的形式帶上交給伺服器的資料,多個資料之間以&進行分割,

  例如:GET  /myWeb/hello.html?name=zhangsan&id=10086  HTTP/1.1

  注意:GET請求,其URL地址後附帶的引數是有限制的,其資料容量通常不能超過1K。

* POST請求方式:可以在請求的實體內容中向伺服器傳送資料

  注意:傳送的資料量無限制。(比如傳輸檔案,使用POST請求來傳輸檔案)

 

【訊息頭分析】

Accept: text/html,image/*         --告訴服務端,客戶端瀏覽器所接受的資料型別

Accept-Charset: ISO-8859-1             --告訴服務端,瀏覽器採用的資料編碼格式

Accept-Encoding: gzip,compress        --告訴服務端,瀏覽器接受的資料壓縮格式

Accept-Language: en-us,zh-              --告訴服務端,瀏覽器接受的語言  

Host: www.7k7k.com:80                    --請求發出的主機(必須),通過這個頭告訴伺服器,想訪問的主機和埠

If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT                       --瀏覽器快取的最後修改時間

Referer: http://www.7k7k.com/index.jsp                                      -- 當前請求來自於哪裡 (防止非法連結),告訴伺服器,它是從哪個資源來訪問伺服器

User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)   --瀏覽器的型別

Cookie:name=eric                                   ---瀏覽器儲存的cookie資料

Connection: close/Keep-Alive                   ---瀏覽器和伺服器的連線狀態。close:關閉。keep-alive:保持連線

Date: Tue, 11 Jul 2000 18:23:51 GMT      --請求發出的時間

 

 

【HTTP響應】

一個HTTP響應,代表伺服器客戶端回送的資料,它包括:

一個狀態行、若干響應頭(訊息頭)、實體內容。

其中的一些訊息頭和實體內容都是可選的,訊息頭和實體內容之間要用空行隔開。

補充對應給的響應正文(即實體內容)

 

【HTTP響應--------狀態行(響應行)】

[ 格式 ] HTTP版本號  狀態碼  原因敘述<CRLF>

[ 例子 ] HTTP/1.1     200    OK

[ 關於狀態碼 ]

狀態碼用於表示伺服器對請求的處理結果,它是一個三位的十進位制數。響應碼分為5大類。

 常見狀態碼:

  200:請求處理完成,成功返回!

  302:需要瀏覽器進一步請求,才能完成。

  404:瀏覽器端的錯誤。沒有找到資源。

  500:伺服器端的錯誤。

 

【HTTP響應---響應頭】

Location: http://www.7k7k.com/index.jsp    --重定向的地址。結合302狀態使用完成重定向的效果,用於告訴客戶找誰

Server:apache tomcat                                --伺服器的型別

Content-Encoding: gzip                              --伺服器傳送給瀏覽器的資料壓縮格式

Content-Length: 80                                   --伺服器傳送給瀏覽器的資料長度

Content-Language: zh-cn                           --伺服器支援語言

Content-Type: text/html; charset=GB2312  --伺服器傳送給瀏覽器的 資料型別 和 資料編碼格式

Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT        --伺服器資源的最後修改時間

Refresh: 1;url=http://www.it315.org                       --定時重新整理或每隔n秒跳轉資源,告訴瀏覽器多長時間重新整理一次

Content-Disposition: attachment; filename=aaa.zip   -- 伺服器告訴給瀏覽器以下載方式開啟資源

Transfer-Encoding: chunked            

Set-Cookie:SS=Q0=5Lb_nQ; path=/search               -- 伺服器傳送給瀏覽器的cookie資料

Expires: -1                                                            --通知瀏覽器不使用快取(-1或0,是不快取)

Cache-Control: no-cache

Pragma: no-cache   

Connection: close/Keep-Alive                                  --連線狀態

Date: Tue, 11 Jul 2000 18:23:51 GMT                     --響應發出的時間

相關文章