摘要:是一種無狀態(tài)協(xié)議。響應空白行代表相應頭結(jié)束響應正文或者叫消息主題響應行響應的第一行為響應行,其中有版本,狀態(tài)碼以及消息響應頭第二行至末尾空白行為響應頭,由服務器向客戶端發(fā)送。這個頭通常配合狀態(tài)碼使用。
無狀態(tài)的Http協(xié)議
http協(xié)議的最新版本是1.1。是一種無狀態(tài)協(xié)議。
什么是無狀態(tài)協(xié)議?無狀態(tài)協(xié)議是指web瀏覽器與web服務器之間不需要建立持久鏈接。當客戶端向服務器端發(fā)送請求(Request)時,服務器響應客戶端的請求(Response),鏈接就被關(guān)閉了,在服務器端不保留鏈接的有關(guān)信息。也就是說http請求只能由客戶端發(fā)起服務器端不能主動向客戶端發(fā)送數(shù)據(jù)。
不知道大家有沒看過《記憶碎片》,這部電影里面的男主角患了罕見的短期記憶喪失癥,也就是同一個人,上次一起打過招呼,下次遇上了也不認識。但是他借助于紙跟筆,以及身上的紋身讓他去記住一些東西。這好比在我們web開發(fā)中的cookie及session。就是因為http得了臉盲癥cookie和session才會應運而生。
http請求與響應http遵循請求(Request)/應答(Response)模型
HTTP請求POST /login.php HTTP/1.1 //請求行 HOST: www.jiejieyh.cn //請求頭 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36 //空白行,代表請求頭結(jié)束 Username=admin&password=12345 //請求正文請求行
HTTP請求的第一行即為請求行,請求行有三部分組成
第一部分說明了該請求是POST請求
第二部分說明請求的是該域名根目錄下的login.php
第三部分說明使用的HTTP協(xié)議版本
請求頭第二行至空白行為HTTP中的請求頭
HOST代表請求的主機地址
User-Agent 代表瀏覽器標識
請求頭由客戶端自行設定
請求正文HTTP請求的最后一行為請求正文,請求正文是可選的。最常出現(xiàn)在POST請求方法中。
HTTP響應HTTP/1.1 200 OK Date: Wed, 23 Nov 2016 10:18:00 GMT Content-Type: text/html; charset=utf-8 Content-Length: 83 Connection: keep-alive Server: Apache X-Powered-By: PHP/7.0.7 Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate Pragma: no-cache Vary: Accept-Encoding Content-Encoding: gzip Access-Control-Allow-Origin: * Access-Control-Allow-Headers: Authorization, origin, X-Requested-With, Content-Type, XMLHttpRequest,request-id Access-Control-Allow-Methods: POST, GET, PUT, DELETE, OPTIONS //空白行代表相應頭結(jié)束 //響應正文或者叫消息主題 ...響應行
HTTP響應的第一行為響應行,其中有HTTP版本,狀態(tài)碼、以及消息“OK”
響應頭第二行至末尾空白行為響應頭,由服務器向客戶端發(fā)送。
響應正文響應頭之后是響應正文,服務器向客戶端發(fā)送的數(shù)據(jù)
HTTP請求方法 GETGET方法用于獲取請求頁面的指定信息(以實體的格式)
GET /index.php?id=1 HTTP/1.1 HOST: www.jiejieyh.cnHEAD
使用HEAD方法服務器不能在響應里返回消息主體,其它與GET相同。此方法常用來測試超文本的有效性、可訪問性和最近的改變。
攻擊者編寫掃描工具時,常用此方法,因為只測試資源是否存在,而不用返回消息主體。速度一定是最快的
HEAD /index.php HTTP/1.1 HOST: www.jiejieyh.cnPOST
POST方法與GET方法相似,最大的區(qū)別在于GET方法沒有請求內(nèi)容,而POST是有請求內(nèi)容的。
POST請求最多用于向服務器發(fā)送大量的數(shù)據(jù)。GET雖然也能發(fā)送數(shù)據(jù),但是有長度限制。
GET請求將發(fā)送的數(shù)據(jù)顯式在瀏覽器端,而POST則不會。安全性相對對對對高一點...
POST /interface/login.php HTTP/1.1 Host: www.jiejieyh.cn Connection: keep-alive Content-Length: 63 Accept: application/json, text/javascript, */*; q=0.01 Origin: http://www.jiejieyh.cn X-Requested-With: XMLHttpRequest User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36 Content-Type: application/x-www-form-urlencoded; charset=UTF-8 Referer: http://www.jiejieyh.cn/ Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.8 act=kol&userName=admin&passWord=123456&vcode=9614&autoLogin=0PUT
PUT方法用于請求服務器把請求中的實體存儲在請求資源下,如果請求資源已經(jīng)在服務器中存在則覆蓋,不存在將會創(chuàng)建這個資源。數(shù)據(jù)為請求正文
PUT /input.txt HOST:www.jiejieyh.cn 12346
這段HTTP PUT請求將會在主機根目錄下創(chuàng)建input.txt,內(nèi)容為123456。不用想,通常情況下通過請求寫入文件,服務器都會禁止的。
DELETEDELETE 方法用于請求源服務器刪除指定的資源,服務器一搬會關(guān)閉此方法。
TRACETRACE方法用于激發(fā)一個遠程的應用層的請求消息回路。也就是說回顯服務器收到的請求。TRACE方法允許客戶端去了解數(shù)據(jù)被請求鏈的另一端接收的情況,并且利用那些數(shù)據(jù)信息去測試或診斷,此方法非常少見。
CONNECTHTTP 1.1協(xié)議規(guī)范保留了CONNECT方法,用于能動態(tài)切換到隧道的代理。
OPTIONSOPTIONS方法是用于請求獲得由URL標識的資源在請求/響應的通信過程中可以使用的功能選項。通過這個方法,客戶端可以在采取具體資源請求之前,決定對該資源采取何種必要措施。或者了解服務器的性能。
OPTIONS / HTTP/1.1 HOST:www.jiejieyh.cn HTTP/1.1 200 OK Allow:OPTIONS,TRACE,GET,HEAD,POST Server:Microsoft-IIs/7.5 Public:OPTIONS,TRACE,GET,HEAD,POST X-Powerd-By:ASP.NET Content-Length:0Http狀態(tài)碼
客戶端發(fā)出請求后,服務器接收處理完成后會 向客戶端發(fā)送響應信息,其中Http響應中的第一行中,最重要的一點就是Http的狀態(tài)碼
HTTP/1.1 200 ok
此時的狀態(tài)碼為200,在Http協(xié)議中表示請求成功
Http的狀態(tài)碼由3位數(shù)字組成,第一位數(shù)字定義了響應的類別且有只有以下5種:
1xx:信息提示,表示請求已經(jīng)被成功接收,繼續(xù)處理。范圍100-101
2xx:成功,服務器成功的處理了請求,范圍200-206
3xx:重定向,重定向狀態(tài)碼用于告訴瀏覽器客戶端,它們訪問的資源已被移動,并告訴客戶端新的資源地址位置。這時瀏覽器將重新對新資源發(fā)起請求。范圍300-305
4xx:客戶端錯誤碼,有時候客戶端會發(fā)送一些服務器無法處理的東西,比如格式錯誤的請求,請求一個不存在的url...其范圍是400-415
5xx:客戶端發(fā)送的請求有效,服務器自身出錯了,5xx就是用來描述服務器內(nèi)部錯誤的,范圍500-505
常見的狀態(tài)碼200:客戶端請求成功
302:重定向
404:請求的資源不存在
401:請求未經(jīng)授權(quán)
500:服務器內(nèi)部錯誤
503:服務器當前不能處理客戶端的請求,一段時間后可能恢復正常
Http消息Http消息稱為Http頭,由4部分組成 請求頭、響應頭、普通頭、實體頭。
請求頭請求頭只出現(xiàn)在Http請求中,請求報頭允許客戶端向服務器傳遞請求的附加信息和客戶端自身的信息。
常用的Http請求頭Host:主要用于指定被請求的Internet主機和端口號 HOST:www.jiejieyh.cn:801
User-Agent:請求報頭域允許客戶端將它的操作系統(tǒng)、瀏覽器和其它屬性告訴服務器 User-Agent:My privacy
Referer:Referer包含一個URL,代表當前訪問的URL的上一個URL,也就是說用戶是從什么地方來到本頁面。
Referer:www.jiejieyh.cn/register.php
Cookie:Cookie是非常重要的請求頭,它是一段文本,常用來表示請求者的身份等。
Range可以請求實體的部分內(nèi)容,多線程下載一定會用到此請求頭。例如:
表示頭500個字節(jié):bytes=0~499
表示第二個500字節(jié):bytes=500~999
表示最后500字節(jié):bytes=-500
表示500字節(jié)以后的范圍:bytes=500-
x-forward-for:即XXF頭,它代表請求端的IP,可以有多個,中間以逗號隔開
Accept:用于指定客戶端接收那些MIME類型的信息,如Accept:text/html,表明客戶端希望接收HTML文本。
Accept-Charset:用于指定客戶端接收的字符集例如:Accept-Charset:utf-8,gb2312。如果在請求消息中沒有設置這個域,默認是任何字符集都可以接收。
響應頭Server:服務器所使用的Web服務器名稱,如Server:Apache/1.3.6(Unix),攻擊者可以通過此頭探測Web服務器名稱。建議在服務器端進行修改此頭的信息
Set-Cookie:向客戶端設置Cookie,通過查看此頭可以清楚地看到服務器向客戶端發(fā)送的Cookie信息
Last-Modified:服務器通過這個頭告訴瀏覽器,資源最后修改時間
Location:服務器通過這個頭告訴瀏覽器去訪問哪個頁面,瀏覽器接收到這個響應之后,通常會立刻訪問Location頭所指向的頁面。這個頭通常配合302狀態(tài)碼使用。
Refresh:服務器通過Refresh頭告訴瀏覽器定時刷新瀏覽器
實體頭請求和響應消息都可以傳送一個實體頭。實體頭定義了關(guān)于實體正文和請求所標識的資源的元信息。元信息也就是實體內(nèi)容的屬性,包括實體信息類型、長度、壓縮方法、最后一次修改時間等。
Content-Type:用于向接收方指定實體的介質(zhì)類型。
Content-Encoding:用作媒體類型的修飾符,它的值指示了已經(jīng)被應用到實體正文的附加內(nèi)容編碼,因而要獲得Content-Type報頭域中所引用的媒體類型,必須采用相應的解碼機制。
Content-Length:用于指明實體正文的長度,以字節(jié)方式存儲的十進制數(shù)字來表示。
Last-Modified:用于指示資源的最后修改日期和時間。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/23302.html
摘要:會通過建立起一個到服務器的連接通道,當本次請求需要的數(shù)據(jù)完畢后,會立即將連接斷開,這個過程是很短的。這三個部分以作為分隔符。最后一個消息頭有兩個,用來表示消息頭部的結(jié)束。但是這并不代表建立在協(xié)議之上的應用程序就無法維持狀態(tài)。 來來來 對,我就是騙你進來的。嘿嘿嘿... 既然來了就看看再走嘛 作為一個學通信出身的前端,說道http、tcp什么的,算是到了我的領(lǐng)域了。(我會告訴你我上課凈睡...
摘要:我笑了笑,我得到了我想要的答案。有強烈的個人色彩,無評價標準。對于沒有經(jīng)驗的大學生,企業(yè)最多考量的就是才干。這些都需要長期的積累,由內(nèi)而外的自然散發(fā)。很多大學畢業(yè)生,進入職場后發(fā)現(xiàn)實際情況與預想的不太一樣。我笑了,你能這么想最好了。 showImg(https://segmentfault.com/img/bV1DoI?w=3500&h=1442); 總有些人有些事似曾相識,我一遍遍的...
摘要:我笑了笑,我得到了我想要的答案。有強烈的個人色彩,無評價標準。對于沒有經(jīng)驗的大學生,企業(yè)最多考量的就是才干。這些都需要長期的積累,由內(nèi)而外的自然散發(fā)。很多大學畢業(yè)生,進入職場后發(fā)現(xiàn)實際情況與預想的不太一樣。我笑了,你能這么想最好了。 showImg(https://segmentfault.com/img/bV1DoI?w=3500&h=1442); 總有些人有些事似曾相識,我一遍遍的...
閱讀 3439·2021-09-26 09:46
閱讀 2787·2021-09-13 10:23
閱讀 3525·2021-09-07 10:24
閱讀 2394·2019-08-29 13:20
閱讀 2923·2019-08-28 17:57
閱讀 3078·2019-08-26 13:27
閱讀 1182·2019-08-26 12:09
閱讀 511·2019-08-26 10:27