国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

HTTP中GET與POST的區別 99%的錯誤認識

isaced / 3235人閱讀

摘要:不會產生動作意味著和的請求不會在服務器上產生任何結果。對長度的限制是字節。起限制作用的是服務器的處理程序的處理能力。很可能受到中文名稱跨站請求偽造攻擊。而數據大小,則是因為瀏覽器的限制造成的。請開始你的表演參考文章的人都理解錯了中與的區別

本篇文章分兩部分,第一部分可以列為初為新人的裝逼失敗模式,第二部分列為修煉低調模式。
裝逼失敗模式:99%的人對GET和POST的認識
修煉低調模式:1%不知道的進階認識

GET和POST,在我們日常WEB開發中,是最常用的數據傳輸方式。面試中我們也經常會遇到。
一般我們在瀏覽器輸入一個網址URL訪問網站都是GET方式請求;
在HTML FROM表單中,可以通過設置method指定提交方式為GET或者POST方式,默認為GET提交方式

HTTP定義了與服務器交互的不同方法,其中最基本的四種:GET,POST,PUT,DELETE,HEAD;
其中GET和HEAD被稱為安全方法,因為使用GET和HEAD的HTTP請求不會產生什么動作。不會產生動作意味著GET和HEAD的HTTP請求不會在服務器上產生任何結果。但是安全方法并不是什么動作都不產生,這里的安全方法僅指不會修改信息。

GET和POST我們比較常用,其它幾種實際應用比較少用到,在此僅作了解。


99%的人所認為的GET和POST 1. 傳輸方式(自我理解“顯示方式”)

GET請求的數據會附加在URL之后,以?分割URL和傳輸數據,多個參數之間以&連接,
"http://www.xxx.com/product?type=shoe&price=100&sex=male"
數據格式有以下注意點:

如果數據是英文字母/數字,原樣發送;

如果是空格,轉換為+;

如果是中文或其他字符,則把數據用Base64加密,
"%E4%BD%A0%E5%A5%BD"其中%XX中的XX為該符號以16進制表示的ASCII碼。

POST請求會把請求的數據放置在HTTP請求包的包體中,GET傳輸的數據會直接暴露在URL中,而POST請求則不會。

2. 傳輸數據大小

GET方式傳輸的數據最多只能是1024字節,
因為GET是通過URL提交數據,那么GET可提交的數據量就跟URL的長度有直接關系,URL本身不存在參數上限的問題,HTTP協議規范也沒有對URL長度進行限制。
這個限制是特定的瀏覽器及服務器對它的限制。IE對URL長度的限制是2083字節(2K+35)。對于其他瀏覽器,如Netscape、FireFox等,理論上沒有長度限制,其限制取決于操作系統的支持。

注意:限制是針對整個URL長度,不單是傳輸的數據長度。

POST方式理論上沒有限制,可傳較大的數據。起限制作用的是服務器的處理程序的處理能力。Apache, Nigx, IIS服務器自身可配置限制傳輸大小。

3. GET在瀏覽器回退是無害的,而POST會再次提交請求 4. GET產生的URL可以作為標簽或存于歷史記錄中,而POST不可以 5. GET請求會被瀏覽器主動cahe,而POST不會,除非手動設置 6. 安全性

GET傳輸的數據直接暴露在URL中,如果我們在做用戶登錄時,需要傳輸登錄帳號及密碼到后端做驗證,如果用GET方式,那么賬戶密碼直接暴露在URL里面,是極其危險的。
而且瀏覽器緩存的機制,訪問過的網站URL會被保存在瀏覽器歷史記錄里,其他人可通過歷史記錄查看訪問網站URL,直接獲取到傳輸的數據。
很可能受到 "Cross-site request forgery"(中文名稱:跨站請求偽造) 攻擊。
不過POST的數據也是可以被攔截的。

總結:

GET請求是用來向服務器發送索取數據的一種請求,實際應用中數據不涉及到安全性,可用GET方式來向后端請求數據,
如分頁或搜索關鍵詞 "http://www.xxx.com/product?keywords=xxx&page=2";

POST請求是向服務器提交數據的一種請求,涉及到安全性的數據,用POST的方式來傳輸較GET更安全。


曾經的曾經,我也是那99%的一員,還把自己歸納的文章發給新人同事看,然后裝逼失敗,被老大引導練成最后的這1%。


1%的人所擁有的

GET和POST本質上是沒有區別的,它們是HTTP協議中的兩種發送請求的方式。
HTTP是基于TCP/IP的關于數據如何在萬維網中通信的協議,即HTTP的底層是TCP/IP,所以GET和POST的底層也是TCP/IP,也就是說:GET/POST都是TCP鏈接。
給POST帶上url參數,給GET加上request body,技術上是可以實現的。

為了更方便的管理,避免混亂,HTTP給這些請求定義GET,POST,PUT,DELETE。
而數據大小,則是因為瀏覽器的限制造成的。

所以GET和POST本質上就是TCP鏈接,并無差別。但是由于HTTP的規定和瀏覽器/服務器的限制,導致他們在應用過程中體現出一些不同

隱藏的Buff

GET產生一個TCP數據包,而POST產生兩個TCP數據包

GET的請求,瀏覽器會把http header和data一并發送出去,服務器返回200(返回數據)
POST的請求,瀏覽器先發送header,服務器響應100 continue,瀏覽器再發送data,服務器響應200(返回數據)

因為POST需要兩步,時間上消耗的多一點,
不過網絡環境好的情況下,發一次包的時間和發兩次包的時間差別基本可以無視。
網絡環境差的情況下,兩次包的TCP在驗證數據包完整性上,有非常大的優點

并不是所有瀏覽器POST發送兩次包,Fiefox就發送一次。

最后的最后,當你以后被別人問到的時候,你就可以。。。。。。請開始你的表演

參考文章:《99%的人都理解錯了HTTP中GET與POST的區別》

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/25743.html

相關文章

  • HTTPGETPOST區別 99%錯誤認識

    摘要:不會產生動作意味著和的請求不會在服務器上產生任何結果。對長度的限制是字節。起限制作用的是服務器的處理程序的處理能力。很可能受到中文名稱跨站請求偽造攻擊。而數據大小,則是因為瀏覽器的限制造成的。請開始你的表演參考文章的人都理解錯了中與的區別 本篇文章分兩部分,第一部分可以列為初為新人的裝逼失敗模式,第二部分列為修煉低調模式。裝逼失敗模式:99%的人對GET和POST的認識修煉低調模式:1...

    Bowman_han 評論0 收藏0
  • HTTPGETPOST區別 99%錯誤認識

    摘要:不會產生動作意味著和的請求不會在服務器上產生任何結果。對長度的限制是字節。起限制作用的是服務器的處理程序的處理能力。很可能受到中文名稱跨站請求偽造攻擊。而數據大小,則是因為瀏覽器的限制造成的。請開始你的表演參考文章的人都理解錯了中與的區別 本篇文章分兩部分,第一部分可以列為初為新人的裝逼失敗模式,第二部分列為修煉低調模式。裝逼失敗模式:99%的人對GET和POST的認識修煉低調模式:1...

    MartinDai 評論0 收藏0
  • 后端集錦

    摘要:數據異構的武器何謂數據異構,上周交易部門商品的同事過來做分享,又看到這個詞,他的里面是數據庫異構。其實我們以前做的事情,也是可以成為數據異構。比如我們將里面的數據持久化到里面去,就是一種數據異構的方式。 如果有人問你數據庫的原理,叫他看這篇文章 一提到關系型數據庫,我禁不住想:有些東西被忽視了。關系型數據庫無處不在,而且種類繁多,從小巧實用的 SQLite 到強大的 Teradata ...

    shusen 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<