認(rèn)識(shí):HTTP協(xié)議

HTTP協(xié)議規(guī)定,請(qǐng)求從客戶(hù)端發(fā)出,最后服務(wù)器端響應(yīng)請(qǐng)求并返回厢破。

HTTP是不保存狀態(tài)的協(xié)議

  • HTTP協(xié)議是一種不保存狀態(tài),即無(wú)狀態(tài)協(xié)議治拿,對(duì)請(qǐng)求和響應(yīng)都不做持久化處理摩泪。
  • 優(yōu)點(diǎn):可以更快的處理大量事物,確保協(xié)議的可伸縮性劫谅。
  • 缺點(diǎn):例如:登錄一個(gè)網(wǎng)站后见坑,當(dāng)頁(yè)面發(fā)生跳轉(zhuǎn)后,沒(méi)辦法保持前一個(gè)頁(yè)面的登錄狀態(tài)捏检。
  • 解決辦法:Cookie技術(shù)荞驴。

Cookie

Cookie技術(shù)通過(guò)在請(qǐng)求和響應(yīng)報(bào)文中寫(xiě)入Cookie信息來(lái)控制客戶(hù)端的狀態(tài)。
Cookie會(huì)根據(jù)從服務(wù)器端發(fā)送的響應(yīng)報(bào)文內(nèi)的一個(gè)叫做Set-Cookie的首部字段信息贯城,通知客戶(hù)端保存Cookie熊楼,當(dāng)下次客戶(hù)端再往該服務(wù)器發(fā)送請(qǐng)求時(shí),客戶(hù)端會(huì)自動(dòng)在請(qǐng)求報(bào)文中加入Cookie值后發(fā)送出去能犯。服務(wù)器端發(fā)現(xiàn)客戶(hù)端發(fā)送過(guò)來(lái)的Cookie后鲫骗,會(huì)去檢查究竟是從哪一個(gè)客戶(hù)端發(fā)來(lái)的連接請(qǐng)求犬耻,然后對(duì)比服務(wù)器上的記錄,最后得到之前的狀態(tài)信息挎峦。
請(qǐng)求報(bào)文(沒(méi)有Cookie信息的狀態(tài))

GET / reader / HTTP/1.1
Host:hackr.jp

響應(yīng)報(bào)文(服務(wù)器端生成Cookie信息)

HTTP/1.1 200 OK
....
<Set-Cookie:sid = 1342077140226742; path= /; expires = Wed,10-Oct-12, 07:12:20 GMT>

請(qǐng)求報(bào)文(自動(dòng)發(fā)送保存著Cookie的信息)

GET / reader / HTTP/1.1
Host:hackr.jp
Cookie:sid = 1342077140226742

持久連接

  • HTTP/1.1和部分HTTP/1.0提出了持久連接香追。
  • 特點(diǎn):只要任意一端沒(méi)有明確提出斷開(kāi)連接,則保持TCP連接狀態(tài)坦胶。
  • 優(yōu)點(diǎn):
  1. 減少了TCP連接的重復(fù)建立和斷開(kāi)的次數(shù)透典;
  2. 減少了服務(wù)器端的負(fù)載;
  3. HTTP請(qǐng)求和響應(yīng)結(jié)束的時(shí)間更短顿苇。
  • 管線(xiàn)化:
    持久連接請(qǐng)求的方式:管線(xiàn)化峭咒。發(fā)送一個(gè)請(qǐng)求后,不需要等待響應(yīng)纪岁,可以繼續(xù)發(fā)送請(qǐng)求凑队,所以可以做到同時(shí)并行發(fā)送多個(gè)請(qǐng)求,使得請(qǐng)求響應(yīng)過(guò)程明顯加快幔翰。

常見(jiàn)Http方法

HTTP協(xié)議使用URI定位互聯(lián)網(wǎng)上的資源漩氨。常見(jiàn)的方法有:GET、POST遗增、PUT叫惊、HEAD、DELETE做修、OPTIONS霍狰、TRACE、CONNECT饰及、LINK蔗坯、UNLINK\

GET:獲取資源

GET方法用來(lái)請(qǐng)求訪(fǎng)問(wèn)的已被URI識(shí)別的資源,指定的資源經(jīng)服務(wù)器端解析后返回響應(yīng)內(nèi)容燎含。
瀏覽器導(dǎo)航欄輸入的地址按回車(chē)宾濒,其實(shí)就是get 請(qǐng)求。

POST :傳輸實(shí)體主體

POST方法用來(lái)傳輸實(shí)體的主體屏箍,POST的主要目的不是獲取響應(yīng)的主體內(nèi)容绘梦,而是向服務(wù)器發(fā)送數(shù)據(jù)。

GET和POST的區(qū)別:

  • get的請(qǐng)求參數(shù)會(huì)拼接到URL上铣除,post的請(qǐng)求參數(shù)是不展現(xiàn)在URL上。
  • 瀏覽器會(huì)自動(dòng)截取URL的長(zhǎng)度鹦付,為防止內(nèi)容丟失尚粘,傳送大量數(shù)據(jù)的時(shí)候,用post郎嫁。
  • 安全性:get方式提交用戶(hù)名密碼的時(shí)候秉继,URL會(huì)展現(xiàn)出來(lái)尚辑,而且瀏覽器的歷史記錄中也會(huì)存在杠茬。請(qǐng)求到達(dá)服務(wù)器之后弛随,請(qǐng)求日志也會(huì)看到。容易造成密碼的泄露栓票。
  • get要數(shù)據(jù)愕够,post給數(shù)據(jù)。

PUT:傳輸文件

PUT方法用來(lái)傳輸文件坠狡,要求在請(qǐng)求報(bào)文的主體中包含文件的內(nèi)容擦秽,然后保存到請(qǐng)求的URI指定的位置漩勤。
HTTP/1.1的PUT方法自身不帶驗(yàn)證機(jī)制越败,存在安全問(wèn)題,不經(jīng)常使用置谦,但是若配合Web應(yīng)用程序的驗(yàn)證機(jī)制亿傅,或架構(gòu)設(shè)計(jì)采用REST標(biāo)準(zhǔn)的同類(lèi)Web網(wǎng)站葵擎,即可使用。

HEAD:獲得報(bào)文首部

HEAD方法和GET方法一樣签餐,只是不返回報(bào)文的主體部分,用于確認(rèn)URI的有效性及資源更新的日期和時(shí)間等戒良。

DELETE

DELETE方法用來(lái)刪除文件糯崎,限制性同PUT方法耗拓。

OPTIONS:詢(xún)問(wèn)支持的方法

OPTIONS方法用來(lái)查詢(xún)針對(duì)請(qǐng)求的URI指定的資源支持的方法乔询。

TRACE:追蹤路徑

TRACE方法是讓W(xué)eb服務(wù)器端將之前的請(qǐng)求通信返回給客戶(hù)端的方法竿刁。
缺點(diǎn):容易引起XST(跨站追蹤)攻擊。
不常用

CONNECT:要求用隧道協(xié)議連接代理

CONNECT方法要求在與代理服務(wù)器通信時(shí)建立隧道鸵熟,實(shí)現(xiàn)用隧道協(xié)議進(jìn)行TCP通信负甸。
不常用

RESTful API:

  1. 表現(xiàn)層狀態(tài)轉(zhuǎn)換(Representational State Transfer呻待,縮寫(xiě):REST)蚕捉,API設(shè)計(jì)規(guī)范。后端設(shè)計(jì)URL的設(shè)計(jì)規(guī)范秘通。
  2. HTTP方法與對(duì)應(yīng)數(shù)據(jù)庫(kù)增刪改查對(duì)應(yīng)
  • GET:讀确蜗 (Read)
  • POST:新建(Create)
  • PUT:更新(Update)
  • PATCH:更新(Update),通常是部分更新
  • DELETE:刪除(Delete)
  1. 范例
  • GET /books , 列出所有的圖書(shū)
  • POST /books , 創(chuàng)建一本圖書(shū)
  • PUT /books, 批量更新圖書(shū)信息
  • DELETE /books, 刪除所有圖書(shū)
  • GET /books/10话原, 獲取10號(hào)圖書(shū)詳細(xì)信息
  • PUT /books/10稿静, 更新10號(hào)圖書(shū)
  • PATCH /books/10辕狰, 更新10號(hào)圖書(shū)
  • DELETE /books/10, 刪除10號(hào)圖書(shū)

PUT和PATCH有什么差別?

  • 對(duì)于
{
    "username": "hunger"
    "email": "hunger@jirengu.com" 
}
  • PUT修改傳參悬钳,需包含全部參數(shù)
{
    "username": "hunger"
    "email": "hunger@vip.qq.com" 
}
  • PATCH修改傳參默勾,只需要傳遞需要修改的參數(shù)
{
    "email": "hunger@vip.qq.com" 
}
  • 另外推薦在URL中強(qiáng)制加入版本號(hào)母剥,如
GET /v1/books

Form表單支持哪些方法

在form表單只支持 post 和get形导。再發(fā)AJAX請(qǐng)求時(shí)朵耕,以上都是可以接受的。也可以通過(guò)變通的方法伪阶,讓服務(wù)器知道你本意是想做什么栅贴。

<form action="/books" method="POST">
    <input type="hidden" name="_method" value="PUT">
</form>

靜態(tài)服務(wù)器案例:

  • 需求
    線(xiàn)上機(jī)器锰霜,外網(wǎng)IP:10.15.20.38
    輸入這個(gè)IP地址的時(shí)候癣缅,會(huì)有一條HTTP的請(qǐng)求報(bào)文到達(dá)這個(gè)機(jī)器友存。
    在這個(gè)機(jī)器上可以上傳文件,例如:abc.html
    http://10.15.20.38:80/abc.html
    結(jié)果就是輸入http://10.15.20.38:80/abc.html之后直晨,可以在瀏覽器看到頁(yè)面上的內(nèi)容罩句。
    GET /abc.html HTTP/1.1
  • 解決步驟(靜態(tài)服務(wù)器)
  1. abc.html门烂,上傳到10.15.20.38的/usr/local/www(上傳到機(jī)器的文件夾下)
  2. 寫(xiě)一個(gè)服務(wù)器兄淫,監(jiān)聽(tīng)80端口。(服務(wù)器其實(shí)就是一個(gè)應(yīng)用程序慨丐,會(huì)時(shí)刻掃描端口房揭,當(dāng)端口收到了HTTP報(bào)文后崩溪,才可以進(jìn)行處理斩松。)
  3. 服務(wù)器聽(tīng)到請(qǐng)求,進(jìn)行處理
    -- 請(qǐng)求的方法什么乳幸?
    -- 請(qǐng)求的path是/abc.html(此處還可以對(duì)path進(jìn)行判斷粹断。)
    -- 服務(wù)器去讀/usr/local/www/abc.html瓶埋,拿出里面的數(shù)據(jù)
    -- 響應(yīng)給客戶(hù)端(里面除了數(shù)據(jù)之外养筒,還有其他信息晕粪,比如告訴客戶(hù)端這是一個(gè)html)
  4. 瀏覽器收到響應(yīng)數(shù)據(jù)巫湘,數(shù)據(jù)類(lèi)型是html,用html的方式渲染展示。
    若是:http://lill.com/abc.html
  5. 買(mǎi)一臺(tái)服務(wù)器诀诊,獲得外網(wǎng):10.15.20.38
  6. 購(gòu)買(mǎi)一個(gè)域名畏梆,lill.con
  7. 配置域名及解析到10.15.20.38。
    把信息提交給域名服務(wù)商磷杏。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末极祸,一起剝皮案震驚了整個(gè)濱河市遥金,隨后出現(xiàn)的幾起案子稿械,更是在濱河造成了極大的恐慌,老刑警劉巖冲粤,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件美莫,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡梯捕,警方通過(guò)查閱死者的電腦和手機(jī)厢呵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)傀顾,“玉大人襟铭,你說(shuō)我怎么就攤上這事《淘” “怎么了寒砖?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)嫉拐。 經(jīng)常有香客問(wèn)我茅逮,道長(zhǎng)碉考,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任贱傀,我火速辦了婚禮魁衙,結(jié)果婚禮上纵隔,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好棚蓄,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布役拴。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪弃酌。 梳的紋絲不亂的頭發(fā)上乌询,一...
    開(kāi)封第一講書(shū)人閱讀 52,457評(píng)論 1 311
  • 那天秆麸,我揣著相機(jī)與錄音,去河邊找鬼房铭。 笑死类溢,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的辩诞。 我是一名探鬼主播译暂,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼褐桌,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了砾淌?” 一聲冷哼從身側(cè)響起啦撮,我...
    開(kāi)封第一講書(shū)人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡摘悴,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片粪小。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡流济,死狀恐怖姿骏,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情分瘦,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布趁冈,位于F島的核電站拜马,受9級(jí)特大地震影響俩莽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一却音、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至专甩,卻和暖如春钟鸵,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背涤躲。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工棺耍, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人种樱。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓蒙袍,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親嫩挤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子害幅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

推薦閱讀更多精彩內(nèi)容