標籤:height gen 技術分享 odi bsp connect put source zh-cn
#########
#概覽
#########
超文字傳輸通訊協定 (HTTP)(Http: Hyper Text Transfer Protocol) :用於發送WWW方式的資料。採用TCP/IP協議,是一個無狀態協議。採用了請求/響應模型。
#########
#Http請求 Request
#########
用戶端向伺服器發送一個請求,看圖:
HTTp請求包括:
1) 要求方法、URI(uniform Resource identity 統一資源識別項question/23133/、 URL:統一資源定位器號www.baidu.com/question/23133/)協議版本
2) 要求標頭
3) \n(空行)
4) 請求資料
Get請求例子,使用Charles抓取的request:GET /562f25980001b1b106000338.jpg HTTP/1.1Host img.mukewang.comUser-Agent Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36Accept image/webp,image/*,*/*;q=0.8Referer http://www.imooc.com/Accept-Encoding gzip, deflate, sdchAccept-Language zh-CN,zh;q=0.8
第一部分:GET說明請求類型為GET,[/562f25980001b1b106000338.jpg]為要訪問的資源,該行的最後一部分說明使用的是HTTP1.1版本。
第二部分:要求標頭部,緊接著請求行(即第一行)之後的部分,用來說明伺服器要使用的附加資訊
從第二行起為要求標頭部,HOST將指出請求的目的地.User-Agent,伺服器端和用戶端指令碼都能訪問它,它是瀏覽器類型檢測邏輯的重要基礎.該資訊由你的瀏覽器來定義,並且在每個請求中自動發送等等
第三部分:空行,要求標頭部後面的空行是必須的
第四部分:請求資料也叫主體,可以添加任意的其他資料。
這個例子的請求資料為空白。
POST請求例子,使用Charles抓取的request:POST / HTTP1.1Host:www.wrox.comUser-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)Content-Type:application/x-www-form-urlencodedContent-Length:40Connection: Keep-Alivename=Professional%20Ajax&publisher=Wiley第一部分:請求行,第一行明了是post請求,以及http1.1版本。第二部分:要求標頭部,第二行至第六行。第三部分:空行,第七行的空行。第四部分:請求資料,第八行。
#########
#Http響應 Response
#########
Http響應包括:也由四個部分組成,分別是:狀態行、訊息前序、空行和響應本文。
#########
#Http 要求方法 & Http1.1 & Http 1.0
#########
根據HTTP標準,HTTP請求可以使用多種要求方法。
HTTP1.0定義了三種要求方法: GET, POST 和 HEAD方法。
HTTP1.1新增了五種要求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
GET 請求指定的頁面資訊,並返回實體主體。HEAD 類似於get請求,只不過返回的響應中沒有具體的內容,用於擷取前序POST 向指定資源提交資料進行處理請求(例如提交表單或者上傳檔案)。資料被包含在請求體中。POST請求可能會導致新的資源的建立和/或已有資源的修改。PUT 從用戶端向伺服器傳送的資料取代指定的文檔的內容。DELETE 請求伺服器刪除指定的頁面。CONNECT HTTP/1.1協議中預留給能夠將串連改為管道方式的Proxy 伺服器。OPTIONS 允許用戶端查看伺服器的效能。TRACE 回顯伺服器收到的請求,主要用於測試或診斷。
GET和POST的區別
GET提交的資料會放在URL之後,以?分割URL和傳輸資料,參數之間以&相連,如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的資料放在HTTP包的Body中.
GET提交的資料大小有限制(因為瀏覽器對URL的長度有限制),而POST方法提交的資料沒有限制.
GET方式需要使用Request.QueryString來取得變數的值,而POST方式通過Request.Form來擷取變數的值。
GET方式提交資料,會帶來安全問題,比如一個登入頁面,通過GET方式提交資料時,使用者名稱和密碼將出現在URL上,如果頁面可以被緩衝或者其他人可以訪問這台機器,就可以從記錄獲得該使用者的帳號和密碼.
參考:http://www.cnblogs.com/ranyonsue/p/5984001.html
Http協議頭