java get post 区别详解_[Java教程]GET 与 POST 其实没有什么区别
[Java教程]GET 與 POST 其實沒有什么區別
0 2020-12-30 11:36:20
GET 與 POST 其實沒有什么區別
本文寫于 2020 年 12 月 30 日
GET 與 POST 是兩種 HTTP 方法,并且是最常用的兩種。
今天在使用 Postman 測試 api 的時候,突發奇想:在 Get 請求的請求體中寫 Body 參數,在 Post 請求中寫 Query 參數。
居然完全可以運行!
對比起我之前看過的一些文章,所謂的 GET 與 POST 的區別,可以說:網上大部分對二者的分析都是錯的,GET 和 POST 沒有本質的區別。
GET 的 HTTP 報文完全是這樣的:GET /cats?id=1 HTTP/1.1Host: localhost:3000Content-Type: application/jsonContent-Length: 15{ "id": 1}
GET 也可以是這樣的:POST /cats?id=1 HTTP/1.1Host: localhost:3000Content-Type: application/jsonContent-Length: 15{ "id": 1}
發現除了開頭的方法不同,別的完全是一模一樣的!
如果我們想要知道他們之間的區別,首先我們得明確:什么是 HTTP?什么是 HTTP 方法?
什么是 HTTP
什么是 HTTP 呢?
HTTP 是一種協議,他的設計目的是保證客戶端與服務器之間的通信。
HTTP 的工作方式是客戶端與服務器之間的「請求」與「應答」。(這個客戶端可能是 web 瀏覽器,也可能是需要聯網的本地應用程序)
但是這個「請求」與「應答」不能瞎來啊,我們互相之間得看得懂才行——這就是協議的作用:規定好應該如何請求、應該如何響應。
關于 HTTP 不多做解釋,可以看之前一的一篇用簡單 Node.js 后臺程序看 HTTP 請求。
HTTP 方法
而 HTTP 方法呢,顧名思義,就是指在客戶端和服務器之間進行「請求-響應」時,被用到的方法。
GET 和 POST 各用一句話來描述:GET 從指定的資源請求數據
POST 向指定的資源提交要被處理的數據
常見錯誤答案
常常會有人分析 GET 與 POST 的區別,這里說一下幾個廣為流傳的“錯誤答案”,甚至有些 W3C 也是這么寫的。
GET 的長度有限制,POST 沒有
GET 方法的長度限制是怎么回事?真的有限制嗎?
有限制的其實是 URL,如果你愿意把參數寫到 GET 請求的 Body 里去,那 GET 請求的長度和 POST 就是一樣的了。
并且即使是 URL 的長度限制,那也不是 HTTP 協議的鍋。HTTP 協議沒有 Body 和 URL 的長度限制,對 URL 限制的大多是瀏覽器和服務器的原因。
瀏覽器原因就不說了,服務器是因為處理長 URL 要消耗比較多的資源,為了性能和安全(防止惡意構造長 URL 來攻擊)考慮,會給 URL 長度加限制。
并且 POST 也不是沒有限制的,只是比較大而已。通常 GET 請求中的 Query 參數大小是以 k 為單位記錄的,根據不同的瀏覽器和服務器有不同的數據;
POST 請求的大小是以 M 為單位記錄的,同樣取決于服務器。
POST 方法比 GET 方法安全
按照網上大部分文章的解釋,POST 比 GET 安全,因為數據在地址欄上不可見。
然而,從傳輸的角度來說,他們都是不安全的!!!
因為 HTTP 在網絡上是明文傳輸的,只要在網絡節點上抓包,就能完整地獲取數據報文。
要想安全傳輸,就只有加密,也就是 HTTPS。
GET 的參數是固定寫法
我們必須把 GET 的參數寫在 ? 后面,用 & 分割嗎?
根本不用。
因為解析報文的過程是通過獲取 TCP 數據,用正則等工具從數據中獲取 Header 和 Body,從而提取參數。
也就是說,我們可以自己約定參數的寫法,只要服務端能夠解釋出來就行,一種比較流行的寫法是 HTTP 方法:GET 對比 POST
99%的人都理解錯了 HTTP 中 GET 與 POST 的區別
都 2019 年了,還問 GET 和 POST 的區別
(完)
本文網址:http://www.shaoqun.com/a/504449.html
*特別聲明:以上內容來自于網絡收集,著作權屬原作者所有,如有侵權,請聯系我們:admin@shaoqun.com。
網絡
0
總結
以上是生活随笔為你收集整理的java get post 区别详解_[Java教程]GET 与 POST 其实没有什么区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 车子有贷款可以过户吗
- 下一篇: php获取函数里参数吗,php函数中获取