HTTP協(xié)議是Hyper Text Transfer Protocol(超文本傳輸協(xié)議)敲霍,用于web服務器和客戶端瀏覽器之間的超文本傳輸。
HTTP是一個基于TCP/IP通信協(xié)議來傳遞數據(HTML 文件, 圖片文件, 查詢結果等)絮吵。
HTTP特點:
?????無連接:無連接的含義是限制每次連接只處理一個請求巫橄。服務器處理完客戶的請求,并收到客戶的應答后菠隆,即斷開連接氏淑。采用這種方式可以節(jié)省傳輸時間勃蜘。
?????媒體獨立的:這意味著,只要客戶端和服務器知道處理的數據內容夸政,任何類型的數據都可以通過HTTP發(fā)送×裥欤客戶端以及服務器指定使用適合的MIME-type內容類型守问。
?????無狀態(tài):HTTP協(xié)議是無狀態(tài)協(xié)議匀归。無狀態(tài)是指協(xié)議對于事務處理沒有記憶能力。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息耗帕,則它必須重傳穆端,這樣可能導致每次連接傳送的數據量增大。另一方面仿便,在服務器不需要先前信息時它的應答就較快体啰。
HTTP請求:
? ??HTTP請求包含三部分,分別是:
? ??請求行:包含請求方法Method嗽仪、服務器資源路徑URL荒勇、HTTP版本信息Version;
? ??請求頭:包括一些訪問的域名闻坚、用戶代理沽翔、Cookie等信息;
? ??請求體:HTTP請求的一些數據窿凤。
? ??HTTP響應包含三部分仅偎,分別是:
? ??狀態(tài)行:包含HTTP版本Version、狀態(tài)碼雳殊、狀態(tài)碼原因短語(狀態(tài)碼含義:http網絡請求 接口測試返回statusCode(狀態(tài)碼)含義)橘沥;
? ??響應頭:包括搭建服務器的軟件、發(fā)送響應的時間Date夯秃、回應數據的格式Content-Type等信息座咆;
? ??響應正文:響應的具體數據。
常用的HTTP請求方法:
? ??GET:?請求指定的頁面信息寝并,并返回實體主體箫措。
? ??HEAD: 用于獲取報頭,與GET方法類似衬潦,只是不返回報文主體斤蔓,一般用于驗證URL是否有效。
? ??POST:向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)镀岛。數據被包含在請求體中弦牡。POST請求可能會導致新的資源的建立和/或已有資源的修改。
? ??PUT:?從客戶端向服務器傳送的數據取代指定的文檔的內容漂羊。
? ??DELETE:請求服務器刪除對應URL位置的文件驾锰。
? ??OPTIONS:允許客戶端查看服務器的性能。
GET方法與POST方法的區(qū)別:
? ? ? ? 1走越、get重點在從服務器上獲取資源椭豫,post重點在向服務器發(fā)送數據;
? ? ? ? 2、get傳輸數據是通過URL請求赏酥,以field(字段)= value的形式喳整,置于URL后,并用"?"連接裸扶,多個請求數據間用"&"連接框都,如http://127.0.0.1/login?name=admin&password=123456,這個過程用戶是可見的呵晨;post傳輸數據是魏保,將字段與對應值封存在請求實體中發(fā)送給服務器,這個過程對用戶是不可見的摸屠; 也因此post比get安全性更高谓罗;
? ? ? ? 3、get傳輸的數據量小餐塘,因為受URL長度限制妥衣,但效率較高;post可以傳輸大量數據戒傻;
? ? ? ? 4税手、get方式只能支持ASCII字符,向服務器傳的中文字符可能會亂碼需纳。post支持標準字符集芦倒,可以正確傳遞中文字符。
常見的請求頭
●?User-Agent:產生請求的瀏覽器類型;
●?Accept:客戶端可識別的響應內容類型列表;星號 “ * ” 用于按范圍將類型分組不翩,用 “ */* ” 指示可接受全部類型兵扬,用“ type/* ”指示可接受 type 類型的所有子類型;
● Accept-Language:客戶端可接受的自然語言;
● Accept-Encoding:客戶端可接受的編碼壓縮格式;
● Accept-Charset:可接受的應答的字符集;
● Host:請求的主機名,允許多個域名同處一個IP 地址口蝠,即虛擬主機;
● connection:連接方式(close 或 keepalive);
● Cookie:存儲于客戶端擴展字段器钟,向同一域名的服務端發(fā)送屬于該域的cookie;
請求頭更多詳情可查看——HTTP請求頭
Content-Type常見的幾種值
常見的媒體格式類型:
????text/html : HTML格式
??? text/plain :純文本格式??????
??? text/xml :? XML格式
??? image/gif :gif圖片格式????
??? image/jpeg :jpg圖片格式?
??? image/png:png圖片格式
? ? multipart/form-data : 需要在表單中進行文件上傳時,就需要使用該格式
? ? application/xhtml+xml :XHTML格式
? ? application/xml???? : XML數據格式
? ? application/atom+xml? :Atom XML聚合格式????
? ? application/json??? : JSON數據格式
? ? application/pdf?????? :pdf格式??
? ? application/msword? : Word文檔格式
? ? application/octet-stream : 二進制流數據(如常見的文件下載)
? ? application/x-www-form-urlencoded : <form encType=””>中默認的encType妙蔗,form表單數據被編碼為key/value格式發(fā)送到服務器(表單默認的提交數據的格式)