2018-09-17GET與POST的真正區(qū)別

HTTP是Hyper Text Transfer Protocol(超文本傳輸協(xié)議)的縮寫
  • 傳輸協(xié)議就是計算機與計算機之間的通信交流
  • 當(dāng)然肯定不止http一個傳輸協(xié)議

接下來我們就來看看有哪幾種傳輸協(xié)議:
FILE(本地文件傳輸協(xié)議)
FTP(文件傳輸協(xié)議)
TELNET(遠(yuǎn)程登錄協(xié)議)
GOPHER(信息查詢系統(tǒng)協(xié)議)
WAIS(廣域信息服務(wù)器協(xié)議)
MAILTO(電子郵件協(xié)議)
還有一些我們就不一一列舉了

今天我們主要講Http傳輸協(xié)議中的GET與POST

  • Get與Post請求到底有什么區(qū)別呢?
  • 在公司的面試中,也會經(jīng)常的問及類似這樣的問題,看似很簡單展东,但是不同層次的人會回答出不同的結(jié)果

一句簡單的話概括:
提及GET和POST的區(qū)別,一定要確定基于什么前提下,在不同的前提下有不同的答案

首先我們先來舉個例子吧!這樣更容易理解

  • 假設(shè)有兩個人(一男一女):男的叫阿飛,女的叫阿紫
  • 阿飛住在飛哥村,阿紫住在王者村,阿飛到阿紫家可以有很多種選擇妹沙,走著去、駕車去勺届、坐飛機去等等强饮。阿飛通常選擇駕車過去。

這里的兩個村相當(dāng)于兩臺計算機,阿飛與阿紫相當(dāng)于這兩臺計算機中的兩個程序,假如這兩個程序要進行通信,他們之間進行通信的方法有很多種,就好比很多交通工具一樣,假設(shè)阿飛開車去就相當(dāng)于網(wǎng)絡(luò)中的Http協(xié)議.

  • 但不過阿飛有兩輛車子,一輛是勞斯萊斯,一輛是可以裝貨拖拉機
  • 兩種車就好比是HTTP協(xié)議中的兩種方式,我們假設(shè)轎車是GET請求方式,裝貨拖拉機是POST請求方式偿渡。
  • 假如有一天阿紫希望阿飛接她來阿飛的飛哥村玩耍

阿飛要去接阿紫,就好比程序A要向程序B發(fā)出一個請求霸奕。從原理上說溜宽,無論是轎車還是貨車都是車,都能夠把人接回來质帅。所以在本質(zhì)上适揉,GET請求和POST請求都能獲取數(shù)據(jù)。

這時候,阿飛的朋友(也就是最帥的龍哥)出來了,說道:"你是不是傻,去接人開轎車多好啊,開拖拉機干嘛煤惩?費油先不談,說不定人家那還不讓拖拉機停車呢!"

  • 既然GET和POST都可以做到獲取數(shù)據(jù)嫉嘀,那么為什么我們通常獲取數(shù)據(jù)使用GET而不使用POST呢?
  • 原因就是在于這個(最帥的龍哥)限制著兩種請求的使用方法
    (最帥的龍哥)就相當(dāng)于是ISO國際標(biāo)準(zhǔn)化組織,這個組織也說了一堆類似龍哥的話,這堆話被稱為RFC規(guī)范

我們通常說的HTTP協(xié)議實際上是基于RFC規(guī)范的,實際上GET和POST請求的語法是完全相同的,但是在RFC規(guī)范中,給GET請求和POST請求規(guī)定了語義,規(guī)定GET用來獲取信息,POST用來發(fā)送信息

  • 每當(dāng)過節(jié)過年的時候,阿飛想要給阿紫家送一些禮物的時候,阿飛按照龍哥的囑咐,開著拖拉機給阿紫家送禮物去了.當(dāng)然,送過去了一些禮物也會稍微拉回來一點小禮物~

這就是按照RFC的規(guī)范來執(zhí)行的,當(dāng)阿飛想要送年貨的時候,就會開拖拉機過去;在互聯(lián)網(wǎng)環(huán)境中,如果想要發(fā)送信息就要使用POST方法魄揉。
注意點:POST方法雖然是發(fā)送消息的剪侮,但也是有Response的,在請求返回的時候帶回來一點數(shù)據(jù)也是被允許的
Response對象用于向客戶端瀏覽器發(fā)送數(shù)據(jù),用戶可以使用該對象將服務(wù)器的數(shù)據(jù)以HTML的格式發(fā)送到用戶端的瀏覽器瓣俯,它與Request組成了一對接收杰标、發(fā)送數(shù)據(jù)的對象,這也是實現(xiàn)動態(tài)的基礎(chǔ)
Web服務(wù)器收到客戶端的http請求彩匕,會針對每一次請求腔剂,分別創(chuàng)建一個用于代表請求的Request對象、和代表響應(yīng)的Response對象驼仪。
Request和Response對象即然代表請求和響應(yīng)掸犬,那我們要獲取客戶機提交過來的數(shù)據(jù),只需要找Request對象就行了绪爸。要向容器輸出數(shù)據(jù)湾碎,只需要找Response對象就行了。

那么這時候問題又來了,阿飛如果不聽龍哥的怎么辦?那這個規(guī)范不就沒有作用了嗎?這個時候龍哥也是很有辦法的,龍哥就坐在阿飛村子門口,如果阿飛想運貨出去的時候,開的不是拖拉機就不讓出村子門口

光有規(guī)范沒有具體的軟件實施也是沒有意義的,所以很多的軟件都遵從了RFC的規(guī)范,比如我們熟悉的Chrome瀏覽器.所以我們想用GET方式發(fā)送文件或者圖片是不可能的~就像阿飛不可能用勞斯萊斯去給阿紫送禮物一樣

  • 當(dāng)人們問起GET和POST的區(qū)別時毡泻,我們要先確定胜茧,這里的GET和POST是基于什么前提的?
  1. 如果什么前提都沒有,也就是不用任何規(guī)范限制的話仇味,我們只考慮語法來說呻顽,這兩個方式是沒有任何區(qū)別的,只有名字不一樣

  2. 如果是基于RFC規(guī)范的,那么問題就又來了.是基于RFC理論的,還是基于具體的實現(xiàn)的

(1)如果是基于RFC理論的,我們稱這個為Specification丹墨。那么GET和POST是具有相同的語法廊遍,但是不具備相同的語義,GET方式用作獲取信息贩挣,POST方式用作發(fā)送信息
(2)如果是基于RFC的具體實現(xiàn)的喉前,我們稱之為implementation。其實要區(qū)分是具體的哪一種實現(xiàn)王财。我們通常默認(rèn)指的是瀏覽器實現(xiàn)的RFC卵迂。當(dāng)然不止瀏覽器,我們?nèi)魏稳硕伎梢宰约涸O(shè)計一個HTTP協(xié)議的接口绒净,使用RFC規(guī)范见咒,當(dāng)然這些是我們不用考慮的,因為并不通用

所以我們只需要考慮瀏覽器實現(xiàn)的RFC,或者說Web環(huán)境下的RFC

1.GET的數(shù)據(jù)在 URL 中對所有人都是可見的(也就是公開的)POST的數(shù)據(jù)不會顯示在 URL 中(私密隱藏)

  1. GET對數(shù)據(jù)長度有限制挂疆,當(dāng)發(fā)送數(shù)據(jù)時改览,GET 方法會向 URL 添加數(shù)據(jù);URL 的長度是受限制的(URL 的最大長度是 2048 個字符)POST方法無限制
  2. GET可收藏為書簽,POST不可收藏為書簽缤言。
  3. GET后退按鈕/刷新無影響宝当,POST數(shù)據(jù)會被重新提交(瀏覽器應(yīng)該告知用戶數(shù)據(jù)會被重新提交)。
  4. GET編碼類型application/x-www-form-url胆萧,POST編碼類型encodedapplication/x-www-form-urlencoded 或 multipart/form-data庆揩。為二進制數(shù)據(jù)使用多重編碼。
  5. GET歷史參數(shù)會保留在瀏覽器歷史中。POST參數(shù)不會保存在瀏覽器歷史中盾鳞。
  6. GET只允許 ASCII 字符犬性。POST沒有限制,也允許二進制數(shù)據(jù)。
  7. 與 POST 相比腾仅,GET 的安全性較差,因為所發(fā)送的數(shù)據(jù)是 URL 的一部分套利。在發(fā)送密碼或其他敏感信息時絕不要使用 GET !POST 比 GET 更安全推励,因為參數(shù)不會被保存在瀏覽器歷史或 web 服務(wù)器日志中。
以上這些點都是我們常見的肉迫,還有一些我們不常見的验辞,比如GET請求只會有一次TCP連接,而POST請求會有兩次TCP連接
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末喊衫,一起剝皮案震驚了整個濱河市跌造,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌族购,老刑警劉巖壳贪,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異寝杖,居然都是意外死亡违施,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門瑟幕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來磕蒲,“玉大人,你說我怎么就攤上這事只盹±蓖” “怎么了?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵殖卑,是天一觀的道長站削。 經(jīng)常有香客問我,道長懦鼠,這世上最難降的妖魔是什么钻哩? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮肛冶,結(jié)果婚禮上街氢,老公的妹妹穿的比我還像新娘。我一直安慰自己睦袖,他們只是感情好珊肃,可當(dāng)我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般伦乔。 火紅的嫁衣襯著肌膚如雪厉亏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天烈和,我揣著相機與錄音爱只,去河邊找鬼。 笑死招刹,一個胖子當(dāng)著我的面吹牛恬试,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播疯暑,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼训柴,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了妇拯?” 一聲冷哼從身側(cè)響起幻馁,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎越锈,沒想到半個月后仗嗦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡瞪浸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年儒将,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片对蒲。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡钩蚊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蹈矮,到底是詐尸還是另有隱情砰逻,我是刑警寧澤,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布泛鸟,位于F島的核電站蝠咆,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏北滥。R本人自食惡果不足惜刚操,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望再芋。 院中可真熱鬧菊霜,春花似錦、人聲如沸济赎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至构捡,卻和暖如春液南,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背勾徽。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工滑凉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人捂蕴。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓譬涡,卻偏偏與公主長得像,于是被迫代替她去往敵國和親啥辨。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,901評論 2 355

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

  • API定義規(guī)范 本規(guī)范設(shè)計基于如下使用場景: 請求頻率不是非常高:如果產(chǎn)品的使用周期內(nèi)請求頻率非常高盯腌,建議使用雙通...
    有涯逐無涯閱讀 2,544評論 0 6
  • 作者:楊光鏈接:https://www.zhihu.com/question/28586791/answer/14...
    studystudy閱讀 425評論 0 2
  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架溉知,建立于...
    Hsinwong閱讀 22,403評論 1 92
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)腕够,斷路器级乍,智...
    卡卡羅2017閱讀 134,657評論 18 139
  • 跟我有過瓜葛的女孩子不少,但真正很喜歡我的不多帚湘,小鐘是其中一個玫荣。 小鐘是我的初中同學(xué),初三調(diào)班后才認(rèn)識她大诸。開學(xué)第一...
    Blasky閱讀 166評論 0 0