日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

還搞不懂HTTP GET和POST的區(qū)別,看這里

前言

我在其它文章中曾說到了處理html表單時(shí)用到了GET和POST方法,那么,GET和POST是兩個(gè)什么東西呢?用它們處理表單又有啥區(qū)別呢?你不知道,就看這篇文章吧。對(duì)你絕對(duì)有用,不管你信不信,反正我是信了。

除了GET和POST這兩種方式以后,還有哪些呢?我接下來就先對(duì)HTTP中定義的操作進(jìn)行總結(jié)一下。

HTTP中定義的有哪些?

我們都知道,使用URL可以確定一個(gè)資源所在的位置,那么我們確定這個(gè)資源以后,是如何對(duì)這個(gè)資源進(jìn)行處理的呢?

Http協(xié)議定義了客戶端與服務(wù)器交互的不同方法,最基本的方法有4種,分別是GET,POST,PUT,DELETE。URL定位了這個(gè)資源,而HTTP中的GET,POST,PUT,DELETE就是對(duì)應(yīng)著對(duì)這個(gè)資源的查,改,增,刪4個(gè)操作。到這里,大家應(yīng)該有個(gè)大概的了解了,GET一般用于獲取/查詢資源信息,而POST一般用于更新資源信息。那么,除了上面說的四種方法,HTTP還有其它方法么?其實(shí)HTTP中定義了以下幾種請(qǐng)求方法:

  • GET方法;
  • HEAD方法;
  • PUT方法;
  • POST方法;
  • TRACE方法;
  • OPTIONS方法;
  • DELETE方法。

現(xiàn)在就對(duì)上述的所有方法都介紹一下,增加大家對(duì)這些方法的一個(gè)總體認(rèn)識(shí)。

Get是最常用的方法,通常用于請(qǐng)求服務(wù)器發(fā)送某個(gè)資源。

HEAD方法與GET方法的行為很類似,但服務(wù)器在響應(yīng)中只返回實(shí)體的主體部分。這就允許客戶端在未獲取實(shí)際資源的情況下,對(duì)資源的首部進(jìn)行檢查,使用HEAD,我們可以更高效的完成以下工作:

  1. 在不獲取資源的情況下,了解資源的一些信息,比如資源類型;
  2. 通過查看響應(yīng)中的狀態(tài)碼,可以確定資源是否存在;
  3. 通過查看首部,測(cè)試資源是否被修改。

PUT方法是讓服務(wù)器用請(qǐng)求的主體部分來創(chuàng)建一個(gè)由所請(qǐng)求的URL命名的新文檔;如果那個(gè)文檔存在的話,就用這個(gè)主體來代替它。

POST方法向服務(wù)器提交數(shù)據(jù),比如完成表單數(shù)據(jù)的提交,將數(shù)據(jù)提交給服務(wù)器處理。

TRACE方法會(huì)在目的服務(wù)器端發(fā)起一個(gè)“回環(huán)”診斷,我們都知道,客戶端在發(fā)起一個(gè)請(qǐng)求時(shí),這個(gè)請(qǐng)求可能要穿過防火墻、代理、網(wǎng)關(guān)、或者其它的一些應(yīng)用程序。這中間的每個(gè)節(jié)點(diǎn)都可能會(huì)修改原始的HTTP請(qǐng)求,TRACE方法允許客戶端在最終將請(qǐng)求發(fā)送服務(wù)器時(shí),它變成了什么樣子。由于有一個(gè)“回環(huán)”診斷,在請(qǐng)求最終到達(dá)服務(wù)器時(shí),服務(wù)器會(huì)彈回一條TRACE響應(yīng),并在響應(yīng)主體中攜帶它收到的原始請(qǐng)求報(bào)文的最終模樣。這樣客戶端就可以查看HTTP請(qǐng)求報(bào)文在發(fā)送的途中,是否被修改過了。

OPTIONS方法用于獲取當(dāng)前URL所支持的方法。若請(qǐng)求成功,則它會(huì)在HTTP頭中包含一個(gè)名為“Allow”的頭,值是所支持的方法,如“GET, POST”。

DELETE方法就是請(qǐng)求服務(wù)器刪除指定URL所對(duì)應(yīng)的資源。但是,客戶端無法保證刪除操作一定會(huì)被執(zhí)行,因?yàn)镠TTP規(guī)范允許服務(wù)器在不通知客戶端的情況下撤銷請(qǐng)求。

上面對(duì)HTTP所支持的所有方法大體上進(jìn)行了介紹,但是在實(shí)際開發(fā)中,我們使用的更多的是GET和POST,而且在面試的時(shí)候,也經(jīng)常會(huì)問GET和POST的區(qū)別,這里就著重對(duì)GET和POST的區(qū)別進(jìn)行總結(jié)。

我們的誤區(qū)

我記得我上大學(xué)那會(huì),就問過老師,GET和POST有啥區(qū)別,老師就簡單的告訴我,POST比GET安全,后來,我才發(fā)現(xiàn),我被老師騙了。那么,對(duì)于GET和POST我們究竟還有哪些誤區(qū)呢?

  • 誤區(qū)一:POST可以比GET提交更多更長的數(shù)據(jù)?由于使用GET方法提交數(shù)據(jù)時(shí),數(shù)據(jù)會(huì)以&符號(hào)作為分隔符的形式,在URL后面添加需要提交的參數(shù),有人就會(huì)說了,瀏覽器地址欄輸入的參數(shù)是有限的,而POST不用再地址欄輸入,所以POST就比GET可以提交更多的數(shù)據(jù)。難道真的是這樣的么?
  • 而實(shí)際上,URL不存在參數(shù)上限的問題,HTTP協(xié)議規(guī)范沒有對(duì)URL長度進(jìn)行限制。這個(gè)限制是特定的瀏覽器及服務(wù)器對(duì)它的限制。IE對(duì)URL長度的限制是2083字節(jié)(2K+35)。對(duì)于其他瀏覽器,如Netscape、FireFox等,理論上沒有長度限制,其限制取決于操作系統(tǒng)的支持。同時(shí),POST是沒有大小限制的,HTTP協(xié)議規(guī)范也沒有進(jìn)行大小限制。POST數(shù)據(jù)是沒有限制的,起限制作用的是服務(wù)器的處理程序的處理能力。總歸一句話,這個(gè)限制是針對(duì)所有HTTP請(qǐng)求的,與GET、POST沒有多少關(guān)系。
  • 誤區(qū)二:POST比GET安全?首先,我們要承認(rèn)安全的概念有很多種,要是從最基本的肉眼看到就不安全,肉眼看不到那就是安全的概念說呢,GET確實(shí)沒有POST安全,畢竟小白用戶確實(shí)可以看到在URL中帶有的數(shù)據(jù)信息,這個(gè)你無法狡辯。那么要是往嚴(yán)謹(jǐn)了說呢,POST是不是要比GET安全呢?其實(shí)不是的。
  • 上面也說了,GET將提交到服務(wù)器的數(shù)據(jù)添加到URL中了,可見;雖然POST的數(shù)據(jù),你肉眼看不到,你抓個(gè)包看看,在HTTP包的包體中,我們提交的數(shù)據(jù)時(shí)仍然可見的;所以說,從這方面來說,POST也是以五十步笑百步了。

抓個(gè)包看看

我們來抓個(gè)包看看,做個(gè)試驗(yàn):

  1. 打開這個(gè)鏈接,去cn.cocos2d-x.org注冊(cè)個(gè)賬號(hào);
  2. 填好注冊(cè)信息;
  3. 打開Wireshare進(jìn)行抓包;
  4. 在注冊(cè)頁面,提交注冊(cè)信息。

查看抓包信息并分析,以下是我抓到的包的一些信息:

"192.168.199.125","117.121.57.62","HTTP","1304","POST /sso/signup?client_id=9&url=http://cn.cocos2d-x.org/main/sso_return HTTP/1.1 (Application/x-www-form-urlencoded)"

192.168.199.125是我的本機(jī)地址;117.121.57.62是請(qǐng)求的目的地址。1304是包的長度;接下來的數(shù)據(jù)才是我們需要關(guān)注的重點(diǎn),可以很明顯的看到,是以POST的方式向服務(wù)器發(fā)送注冊(cè)信息的。我們?cè)賮砜纯窗l(fā)送了那些信息,由于使用的POST方法,我們無法從URL中得到任何有用的東西,那我們就從HTTP包體中看看。內(nèi)容如下:

username=JellyThink&password=e10adc3949ba59abbe56e057f20f883e&repassword=e10adc3949ba59abbe56e057f20f883e&email=jellythink%40163.com&vcode=5Gp8&rgpermit=1

看到了嗎?里面都是我輸入的信息,具體如下:

  1. username=JellyThink
  2. password=e10adc3949ba59abbe56e057f20f883e(MD5碼)
  3. repassword=e10adc3949ba59abbe56e057f20f883e
  4. [email protected]
  5. vcode=5gp8(驗(yàn)證碼)

現(xiàn)在你還覺POST安全嗎?關(guān)于GET方式,我這里就不再舉例說明了。你也趕緊動(dòng)手去抓個(gè)包看看吧。

最后呢?

最后呢,很多時(shí)候,大家都覺的使用GET很方便,畢竟使用POST要用到Form,但是,你要知道,你使用GET方法時(shí),瀏覽器可能會(huì)緩存你的地址等信息,還會(huì)留下歷史記錄,而對(duì)于POST方法呢,則不會(huì)進(jìn)行緩存。以后在開發(fā)中,一定要分清楚GET和POST的使用場(chǎng)合,什么時(shí)候要使用GET,什么時(shí)候要使用POST,自己做到心中有數(shù)。

可能,你在google類似的文章的時(shí)候,可能會(huì)看到分析POST和PUT區(qū)別的文章,這又是一類糾結(jié)的東西,更多的時(shí)候,我們分析這種東西都是分實(shí)際情景,結(jié)合設(shè)計(jì)者的語義去使用,慢慢體會(huì)吧。至少我現(xiàn)在也不知道如何準(zhǔn)確的區(qū)分POST和PUT。當(dāng)然了,我還是要推薦一位大牛的文章,有時(shí)間去拜讀一下吧,《REST當(dāng)中為什么要使用HTTP PUT》。

分享到:
標(biāo)簽:POST
用戶無頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績?cè)u(píng)定