針對GET& POST的掌握能夠說是迷迷糊糊的,今天特地拿出來好好整理一下,便於掌握理解。html
在服務器端都有一個用來標識資源位置的符號,被稱爲統一資源標識(URL)。web
URI有兩種形式。分別爲URL何URN. 數據庫
URL瀏覽器
統一資源定位符(URL,英語UniformResourceLocator的縮寫)也被稱爲網頁地址,是因特網上標準的資源的地址。 緩存
URL的格式由下列三部分組成: (協議)://(主機名):(端口號) / (文件路徑)/(文件名) 安全
第一部分是協議(或稱爲服務方式);服務器
第二部分是存有該資源的主機IP地址(有時也包括端口號);網絡
第三部分是主機資源的具體地址。,如目錄和文件名等。架構
第一部分和第二部分之間用「://」符號隔開,第二部分和第三部分用「/」符號隔開。第一部分和第二部分是不可缺乏的,第三部分有時能夠省略。如今幾乎全部的URI都是URL。框架
URN
統一資源名稱 (Uniform Resource Name, URN),惟一標識一個實體的標識符,可是不能給出實體的位置。系統能夠先在本地尋找一個實體,在它試着在Web上找到該實體以前。它也容許Web位置改變,然而這個實體卻仍是可以被找到。URN 能夠提供一種機制,用於查找和檢索定義特定命名空間的架構文件。儘管普通的 URL 能夠提供相似的功能,可是在這方面,URN 更增強大而且更容易管理,由於 URN 能夠引用多個 URL。與 URL 不一樣,URN 與地址無關。URN 和 URL 都屬於 URI。URN在web中主要應用是下拉菜單的製做。使用URN時下拉菜單的易擴展性將會獲得很大的提升。
HTTP
Http定義了與服務器交互的不一樣方法,最基本的方法有4種,分別是GET,POST,PUT,DELETE。URL全稱是資源描述符,咱們能夠這樣認爲:一個URL地址,它用於描述一個網絡上的資源,而HTTP中的GET,POST,PUT,DELETE就對應着對這個資源的查,改,增,刪4個操做。到這裏,你們應該有個大概的瞭解了,GET通常用於獲取/查詢資源信息,而POST通常用於更新資源信息。
1.根據HTTP規範,GET用於信息獲取,並且應該是安全的和冪等的。
(1).所謂安全的意味着該操做用於獲取信息而非修改信息。換句話說,GET 請求通常不該產生反作用。就是說,它僅僅是獲取資源信息,就像數據庫查詢同樣,不會修改,增長數據,不會影響資源的狀態。
* 注意:這裏安全的含義僅僅是指是非修改信息。
(2).冪等的意味着對同一URL的多個請求應該返回一樣的結果。
2.根據HTTP規範,POST表示可能修改變服務器上的資源的請求。繼續引用上面的例子:仍是新聞以網站爲例,讀者對新聞發表本身的評論應該經過POST實現,由於在評論提交後站點的資源已經不一樣了,或者說資源被修改了。
對於HTTP原理性的東西,人們在實際項目中並無遵照:
1.不少人貪方便,更新資源時用了GET,由於用POST必需要到FORM(表單),這樣會麻煩一點。
2.對資源的增,刪,改,查操做,其實均可以經過GET/POST完成,不須要用到PUT和DELETE。
3.另一個是,早期的Web MVC框架設計者們並無有意識地將URL看成抽象的資源來看待和設計,因此致使一個比較嚴重的問題是傳統的Web MVC框架基本上都只支持GET和POST兩種HTTP方法,而不支持PUT和DELETE方法。
GET & POST區別
1.請求數據的位置,
GET 請求會把請求的數據放在url的後面用?分割,提交的每一項使用&來分割,也就是將請求的數據放在請求的頭部。若是是中文或者其餘字符使用BASE64來加密;而POST藉助form將請求的數據放在請求的請求體。
2.長度的限制
針對這個長度的限制,是很是有爭議的說法。HTTP協議明確地指出了,HTTP頭和Body都沒有長度的要求。而對於URL長度上的限制,有兩方面的緣由形成:
a.瀏覽器。聽說早期的瀏覽器會對URL長度作限制。聽說IE對URL長度會限制在2048個字符內(統一承認)
b.服務器。URL長了,對服務器處理也是一種負擔。
3.安全性
因爲GET是將參數放在url的後面,直接暴露出來,因此會相對不安全。這是由於使用GET的數據可能會被緩存起來,這樣就會致使所謂的不安全。知乎中總結的一些使用GET的場景:
- 請求中的URL能夠被手動輸入
【參考】
1.http://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html