關於Http協議的解析

2021-10-02 11:56:29 字數 3114 閱讀 7118

http概述

http(hypertext transport protocol),即超文字傳輸協議。這個協議詳細規定了瀏覽器和全球資訊網伺服器之間互相通訊的規則。

http就是乙個通訊規則,通訊規則規定了客戶端傳送給伺服器的內容格式,也規定了伺服器傳送給客戶端的內容格式。其實我們要學習的就是這個兩個格式!客戶端傳送給伺服器的格式叫「請求協議」;伺服器傳送給客戶端的格式叫「響應協議」。       

url和uri

url:統一資源定位符,就是乙個**,例如:就是乙個url。/hello/index.html也是乙個url,url必須是乙個真實存在的**。

請求協議

請求協議的格式如下:

請求首行;請求方式 請求路徑  請求協議/請求版本. get http/1.1

請求頭資訊;鍵值對

空行; 分隔符.請求體和請求頭

請求體。

瀏覽器傳送給伺服器的內容就這個格式的,如果不是這個格式伺服器將無法解讀!在http協議中,請求有很多請求方法,其中最為常用的就是get和post。不同的請求方法之間的區別,後面會一點一點的介紹。

get請求

或者

l  get /hello/index.jsp http/1.1:get請求,請求伺服器路徑為/hello/index.jsp,協議為1.1;

l  *host:localhost:請求的主機名為localhost;

l  *user-agent: mozilla/5.0 (windows nt 5.1; rv:5.0) gecko/20100101firefox/5.0:與瀏覽器和os相關的資訊。有些**會顯示使用者的系統版本和瀏覽器版本資訊,這都是通過獲取user-agent頭資訊而來的;

l  accept-encoding: gzip, deflate:支援的壓縮格式。資料在網路上傳遞時,可能伺服器會把資料壓縮後再傳送;

l  accept-charset: gb2312,utf-8;q=0.7,*;q=0.7:客戶端支援的編碼;

l  *cookie: jsessionid=369766fdf6220f7803433c0b2de36d98:因為不是第一次訪問這個位址,所以會在請求中把上一次伺服器響應中傳送過來的cookie在請求中一併傳送去過;這個cookie的名字為jsessionid,然後在講會話是講究它!

post請求體

或者

post請求是可以有體的,而get請求有請求體(請求體是空白)。

l  content-length:13:請求體的長度,這裡表示13個位元組。

l  keyword=hello:請求體內容!hello是在表單中輸入的資料,keyword是表單字段的名字。

referer請求頭是比較有用的乙個請求頭,它可以用來做統計工作,也可以用來做防盜煉。

響應協議

響應協議的格式如下:

響應首行 

響應頭資訊;

空行;響應體。

響應內容是由伺服器傳送給瀏覽器的內容,瀏覽器會根據響應內容來顯示。

*http/1.1 200 ok:響應協議為http1.1,狀態碼為200,表示請求成功,ok是對狀態碼的解釋;
*server: apache-coyote/1.1:伺服器的版本資訊;
*content-type: text/html;charset=utf-8:響應體使用的編碼為utf-8;
*content-length: 724:響應體為724位元組;
*set-cookie: jsessionid=c97e2b4c55553eab46079a4f263435a4; path=/hello:響應給客戶端的cookie;
*date: wed, 25 sep 2012 04:15:03 gmt:響應的時間,這可能會有8小時的時區差;

狀態碼

響應頭對瀏覽器來說很重要,它說明了響應的真正含義。例如200表示響應成功了,302表示重定向,這說明瀏覽器需要再發乙個新的請求。

l  200:請求成功,瀏覽器會把響應體內容(通常是html)顯示在瀏覽器中;

l  404:請求的資源沒有找到,說明客戶端錯誤的請求了不存在的資源;

l  500:請求資源找到了,但伺服器內部出現了錯誤;

l  304:當使用者第一次請求index.html時,伺服器會新增乙個名為last-modified響應頭,這個頭說明了index.html的最後修改時間,瀏覽器會把index.html內容,以及最後響應時間快取下來。當使用者第二次請求index.html時,在請求中包含乙個名為if-modified-since請求頭,它的值就是第一次請求時伺服器通過last-modified響應頭髮送給瀏覽器的值,即index.html最後的修改時間,if-modified-since請求頭就是在告訴伺服器,我這裡瀏覽器快取的index.html最後修改時間是這個,您看看現在的index.html最後修改時間是不是這個,如果還是,那麼您就不用再響應這個index.html內容了,我會把快取的內容直接顯示出來。而伺服器端會獲取if-modified-since值,與index.html的當前最後修改時間比對,如果相同,伺服器會發響應碼304,表示index.html與瀏覽器上次快取的相同,無需再次傳送,瀏覽器可以顯示自己的快取頁面,如果比對不同,那麼說明index.html已經做了修改,伺服器會響應200。

HTTP協議解析

客戶端 通過傳送請求獲取伺服器資源的 web 瀏覽器等.http hypertext transfer protocol,超文字傳輸協議 url uniform12resource locator,統一資源定位符 tcp ip 網際網路相關的各類協議族的總稱 uri 統一資源識別符號,表示由某個協議...

HTTP協議解析

1 http協議是什麼 http協議是工作在應用層的一種知名的通訊協議 大佬程式設計師寫的 負責應用程式之間的資料溝通。http是乙個簡單的請求 響應協議,它通常執行在tcp之上。它指定了客戶端可能傳送給伺服器什麼樣的訊息以及得到什麼樣的響應。2 http協議的格式解析 首行 請求首行 請求方法 g...

關於HTTP協議

http協議 超文字傳輸協議 http是乙個應用層的物件導向的協議,主要特點如下 1 支援伺服器 客戶端模式 2 簡單快捷,客戶請求伺服器,通常只需傳送請求方法和路徑,請求方法包括get,post,put,delete等 3 http協議允許傳送任何型別的資料,json,xml,陣列等 4 http...