get与post区别
兩種 HTTP 請(qǐng)求方法:GET 和 POST
在客戶機(jī)和服務(wù)器之間進(jìn)行請(qǐng)求-響應(yīng)時(shí),兩種最常被用到的方法是:GET 和 POST。
- GET?- 從指定的資源請(qǐng)求數(shù)據(jù)。
- POST?- 向指定的資源提交要被處理的數(shù)據(jù)
GET 方法
請(qǐng)注意,查詢字符串(名稱/值對(duì))是在 GET 請(qǐng)求的 URL 中發(fā)送的:
/test/demo_form.asp?name1=value1&name2=value2有關(guān) GET 請(qǐng)求的其他一些注釋:
- GET 請(qǐng)求可被緩存
- GET 請(qǐng)求保留在瀏覽器歷史記錄中
- GET 請(qǐng)求可被收藏為書簽
- GET 請(qǐng)求不應(yīng)在處理敏感數(shù)據(jù)時(shí)使用
- GET 請(qǐng)求有長(zhǎng)度限制
- GET 請(qǐng)求只應(yīng)當(dāng)用于取回?cái)?shù)據(jù)
POST 方法
請(qǐng)注意,查詢字符串(名稱/值對(duì))是在 POST 請(qǐng)求的 HTTP 消息主體中發(fā)送的:
POST /test/demo_form.asp HTTP/1.1 Host: w3schools.com name1=value1&name2=value2有關(guān) POST 請(qǐng)求的其他一些注釋:
- POST 請(qǐng)求不會(huì)被緩存
- POST 請(qǐng)求不會(huì)保留在瀏覽器歷史記錄中
- POST 不能被收藏為書簽
- POST 請(qǐng)求對(duì)數(shù)據(jù)長(zhǎng)度沒有要求
如果我告訴你,你死記硬背的這些所謂“標(biāo)準(zhǔn)答案”不是面試官想要的,你肯定不服,首先從安全性講,get和post都一樣,沒啥所謂的哪個(gè)更安全
get請(qǐng)求參數(shù)在url地址上,直接暴露,post請(qǐng)求的參數(shù)放body部分,按F12也直接暴露了,所以沒啥安全性可言
“GET參數(shù)通過URL傳遞,POST放在Request body中”這個(gè)其實(shí)也不準(zhǔn),post請(qǐng)求也可以沒body,也可以在url傳遞呢?
如果我告訴你get請(qǐng)求和post請(qǐng)求本質(zhì)上沒區(qū)別,你肯定不信!
GET和POST有一個(gè)重大區(qū)別,簡(jiǎn)單的說:
GET產(chǎn)生一個(gè)TCP數(shù)據(jù)包;POST產(chǎn)生兩個(gè)TCP數(shù)據(jù)包。
長(zhǎng)的說:
對(duì)于GET方式的請(qǐng)求,瀏覽器會(huì)把http header和data一并發(fā)送出去,服務(wù)器響應(yīng)200(返回?cái)?shù)據(jù));
而對(duì)于POST,瀏覽器先發(fā)送header,服務(wù)器響應(yīng)100 continue,瀏覽器再發(fā)送data,服務(wù)器響應(yīng)200 ok(返回?cái)?shù)據(jù))。
比較 GET 與 POST
下面的表格比較了兩種 HTTP 方法:GET 和 POST。
| 后退按鈕/刷新 | 無害 | 數(shù)據(jù)會(huì)被重新提交(瀏覽器應(yīng)該告知用戶數(shù)據(jù)會(huì)被重新提交)。 |
| 書簽 | 可收藏為書簽 | 不可收藏為書簽 |
| 緩存 | 能被緩存 | 不能緩存 |
| 編碼類型 | application/x-www-form-urlencoded | application/x-www-form-urlencoded 或 multipart/form-data。為二進(jìn)制數(shù)據(jù)使用多重編碼。 |
| 歷史 | 參數(shù)保留在瀏覽器歷史中。 | 參數(shù)不會(huì)保存在瀏覽器歷史中。 |
| 對(duì)數(shù)據(jù)長(zhǎng)度的限制 | 是的。當(dāng)發(fā)送數(shù)據(jù)時(shí),GET 方法向 URL 添加數(shù)據(jù);URL 的長(zhǎng)度是受限制的(URL 的最大長(zhǎng)度是 2048 個(gè)字符)。 | 無限制。 |
| 對(duì)數(shù)據(jù)類型的限制 | 只允許 ASCII 字符。 | 沒有限制。也允許二進(jìn)制數(shù)據(jù)。 |
| 安全性 | 與 POST 相比,GET 的安全性較差,因?yàn)樗l(fā)送的數(shù)據(jù)是 URL 的一部分。 在發(fā)送密碼或其他敏感信息時(shí)絕不要使用 GET ! | POST 比 GET 更安全,因?yàn)閰?shù)不會(huì)被保存在瀏覽器歷史或 web 服務(wù)器日志中。 |
| 可見性 | 數(shù)據(jù)在 URL 中對(duì)所有人都是可見的。 | 數(shù)據(jù)不會(huì)顯示在 URL 中。 |
其他 HTTP 請(qǐng)求方法
下面的表格列出了其他一些 HTTP 請(qǐng)求方法:
| HEAD | 與 GET 相同,但只返回 HTTP 報(bào)頭,不返回文檔主體。 |
| PUT | 上傳指定的 URI 表示。 |
| DELETE | 刪除指定資源。 |
| OPTIONS | 返回服務(wù)器支持的 HTTP 方法。 |
| CONNECT | 把請(qǐng)求連接轉(zhuǎn)換到透明的 TCP/IP 通道。 |
轉(zhuǎn)載于:https://www.cnblogs.com/ZoeLiang/p/10742782.html
總結(jié)
以上是生活随笔為你收集整理的get与post区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Jenkins持续集成实践之java项目
- 下一篇: stark组件开发之组合搜索基本显示