狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

99%的人理解錯HTTP中GET與POST的區(qū)別

admin
2016年9月26日 7:0 本文熱度 7804

GET 和 POST 是 HTTP 請求的兩種基本方法,要說它們的區(qū)別,接觸過 WEB 開發(fā)的人都能說出一二。


最直觀的區(qū)別就是 GET 把參數(shù)包含在 URL 中,POST 通過 request body 傳遞參數(shù)。

你可能自己寫過無數(shù)個 GET 和 POST 請求,或者已經(jīng)看過很多權(quán)威網(wǎng)站總結(jié)出的他們的區(qū)別,你非常清楚知道什么時候該用什么。

當(dāng)你在面試中被問到這個問題,你的內(nèi)心充滿了自信和喜悅。


你輕輕松松的給出了一個"標(biāo)準(zhǔn)答案":

GET 在瀏覽器回退時是無害的,而 POST 會再次提交請求。

GET 產(chǎn)生的 URL 地址可以被 Bookmark,而 POST 不可以。

GET 請求會被瀏覽器主動 cache,而 POST 不會,除非手動設(shè)置。

GET 請求只能進行 url 編碼,而 POST 支持多種編碼方式。

GET 請求參數(shù)會被完整保留在瀏覽器歷史記錄里,而 POST 中的參數(shù)不會被保留。

GET 請求在 URL 中傳送的參數(shù)是有長度限制的,而 POST 么有。

對參數(shù)的數(shù)據(jù)類型,GET 只接受 ASCII 字符,而 POST 沒有限制。

GET 比 POST 更不安全,因為參數(shù)直接暴露在 URL 上,所以不能用來傳遞敏感信息。

GET 參數(shù)通過 URL 傳遞,POST 放在 Request body 中。

(本標(biāo)準(zhǔn)答案參考自 w3schools)

"很遺憾,這不是我們要的回答!"


請告訴我真相。。。

如果我告訴你 GET 和 POST 本質(zhì)上沒有區(qū)別你信嗎?

讓我們扒下 GET 和 POST 的外衣,坦誠相見吧!

GET 和 POST 是什么?HTTP 協(xié)議中的兩種發(fā)送請求的方法。

HTTP 是什么?HTTP 是基于 TCP/IP 的關(guān)于數(shù)據(jù)如何在萬維網(wǎng)中如何通信的協(xié)議。

HTTP 的底層是 TCP/IP。所以 GET 和 POST 的底層也是 TCP/IP,也就是說,GET/POST 都是 TCP 鏈接。GET 和 POST 能做的事情是一樣一樣的。你要給 GET 加上 request body,給 POST 帶上 url 參數(shù),技術(shù)上是完全行的通的。

那么,"標(biāo)準(zhǔn)答案"里的那些區(qū)別是怎么回事?


在我大萬維網(wǎng)世界中,TCP 就像汽車,我們用 TCP 來運輸數(shù)據(jù),它很可靠,從來不會發(fā)生丟件少件的現(xiàn)象。但是如果路上跑的全是看起來一模一樣的汽車,那這個世界看起來是一團混亂,送急件的汽車可能被前面滿載貨物的汽車攔堵在路上,整個交通系統(tǒng)一定會癱瘓。為了避免這種情況發(fā)生,交通規(guī)則 HTTP 誕生了。HTTP 給汽車運輸設(shè)定了好幾個服務(wù)類別,有 GET, POST, PUT, delete 等等,HTTP 規(guī)定,當(dāng)執(zhí)行 GET 請求的時候,要給汽車貼上 GET 的標(biāo)簽(設(shè)置 method 為 GET),而且要求把傳送的數(shù)據(jù)放在車頂上(url 中)以方便記錄。如果是 POST 請求,就要在車上貼上 POST 的標(biāo)簽,并把貨物放在車廂里。當(dāng)然,你也可以在 GET 的時候往車廂內(nèi)偷偷藏點貨物,但是這是很不光彩;也可以在 POST 的時候在車頂上也放一些數(shù)據(jù),讓人覺得傻乎乎的。HTTP 只是個行為準(zhǔn)則,而 TCP 才是 GET 和 POST 怎么實現(xiàn)的基本。

但是,我們只看到 HTTP 對 GET 和 POST 參數(shù)的傳送渠道(url 還是 requrest body)提出了要求。"標(biāo)準(zhǔn)答案"里關(guān)于參數(shù)大小的限制又是從哪來的呢?


在我大萬維網(wǎng)世界中,還有另一個重要的角色:運輸公司。不同的瀏覽器(發(fā)起 http 請求)和服務(wù)器(接受 http 請求)就是不同的運輸公司。雖然理論上,你可以在車頂上無限的堆貨物(url 中無限加參數(shù))。但是運輸公司可不傻,裝貨和卸貨也是有很大成本的,他們會限制單次運輸量來控制風(fēng)險,數(shù)據(jù)量太大對瀏覽器和服務(wù)器都是很大負(fù)擔(dān)。業(yè)界不成文的規(guī)定是,(大多數(shù))瀏覽器通常都會限制 url 長度在 2K 個字節(jié),而(大多數(shù))服務(wù)器最多處理 64K 大小的 url。超過的部分,恕不處理。如果你用 GET 服務(wù),在 request body 偷偷藏了數(shù)據(jù),不同服務(wù)器的處理方式也是不同的,有些服務(wù)器會幫你卸貨,讀出數(shù)據(jù),有些服務(wù)器直接忽略,所以,雖然 GET 可以帶 request body,也不能保證一定能被接收到哦。

好了,現(xiàn)在你知道,GET 和 POST 本質(zhì)上就是 TCP 鏈接,并無差別。但是由于 HTTP 的規(guī)定和瀏覽器 / 服務(wù)器的限制,導(dǎo)致他們在應(yīng)用過程中體現(xiàn)出一些不同。


你以為本文就這么結(jié)束了?


我們的大 BOSS 還等著出場呢。。。

這位 BOSS 有多神秘?當(dāng)你試圖在網(wǎng)上找" GET 和 POST 的區(qū)別"的時候,那些你會看到的搜索結(jié)果里,從沒有提到他。他究竟是什么呢。。。

GET 和 POST 還有一個重大區(qū)別,簡單的說:

GET 產(chǎn)生一個 TCP 數(shù)據(jù)包;POST 產(chǎn)生兩個 TCP 數(shù)據(jù)包。

長的說:

對于 GET 方式的請求,瀏覽器會把 http header 和 data 一并發(fā)送出去,服務(wù)器響應(yīng) 200(返回數(shù)據(jù));

而對于 POST,瀏覽器先發(fā)送 header,服務(wù)器響應(yīng) 100 continue,瀏覽器再發(fā)送 data,服務(wù)器響應(yīng) 200 ok(返回數(shù)據(jù))。

也就是說,GET 只需要汽車跑一趟就把貨送到了,而 POST 得跑兩趟,第一趟,先去和服務(wù)器打個招呼"嗨,我等下要送一批貨來,你們打開門迎接我",然后再回頭把貨送過去。

因為 POST 需要兩步,時間上消耗的要多一點,看起來 GET 比 POST 更有效。因此 Yahoo 團隊有推薦用 GET 替換 POST 來優(yōu)化網(wǎng)站性能。但這是一個坑!跳入需謹(jǐn)慎。為什么?

1. GET 與 POST 都有自己的語義,不能隨便混用。

2. 據(jù)研究,在網(wǎng)絡(luò)環(huán)境好的情況下,發(fā)一次包的時間和發(fā)兩次包的時間差別基本可以無視。而在網(wǎng)絡(luò)環(huán)境差的情況下,兩次包的 TCP 在驗證數(shù)據(jù)包完整性上,有非常大的優(yōu)點。

3. 并不是所有瀏覽器都會在 POST 中發(fā)送兩次包,F(xiàn)irefox 就只發(fā)送一次。

現(xiàn)在,當(dāng)面試官再問你" GET 與 POST 的區(qū)別"的時候,你的內(nèi)心是不是這樣的?


該文章在 2023/11/10 12:16:05 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調(diào)度、堆場、車隊、財務(wù)費用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點,圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務(wù)都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved