1. 程式人生 > >python 關於post和get的區別

python 關於post和get的區別

1、URL解析:

基本格式:schema://host[:port#]/path/.../[?query-string][#anchor]

scheme               指定低層使用的協議(例如:http, https, ftp)

host                   HTTP伺服器的IP地址或者域名

port#                 HTTP伺服器的預設埠是80,這種情況下埠號可以省略。如果使用了別的埠,必須指明,例如 http://www.cnblogs.com:8080/

path                   訪問資源的路徑

query-string       傳送給http伺服器的資料

anchor-             錨

2、post和get的區別:

HTTP協議定義了很多與伺服器互動的方法,最基本的有4種,分別是GET,POST,PUT,DELETE. 一個URL地址用於描述一個網路上的資源,而HTTP中的GET, POST, PUT, DELETE就對應著對這個資源的查,改,增,刪4個操作,其中最常見請求方式是GET和POST,並且現在瀏覽器一般只支援GET和POST方法。GET一般用於獲取/查詢資源資訊,而POST一般用於更新資源資訊,他們之間主要區別如下:

1)根據HTTP規範,GET用於資訊獲取,而且應該是安全的和冪等的,這裡安全是指該操作用於獲取資訊而非修改資訊,冪等是指對同一URL的多個請求應該返回同樣的結果(這一點在實質實現時,可能並不滿足);

POST表示可能修改變伺服器上的資源的請求。

2)GET請求的資料會附在URL之後(就是把資料放置在HTTP協議頭中),以?分割URL和傳輸資料,引數之間以&相連,如果資料是英文字母/數字,原樣傳送,如果是空格,轉換為+,如果是中文/其他字元,則直接把字串用BASE64編碼;POST把提交的資料則放置在是HTTP包的包體中。

3)因為GET是通過URL提交資料,那麼GET可提交的資料量就跟URL的長度有直接關係,理論上URL長度是沒有限制的,即HTTP協議沒有規定URL的長度,但在實質中,特定的瀏覽器可能對這個長度做了限制;理論上POST也是沒有大小限制的,HTTP協議規範也沒有進行大小限制,但在服務端通常會對這個大小做一個限制,當然這個限制比GET寬鬆的多,即使用POST可以提交的資料量比GET大得多。

最後,網上有人說,POST的安全性要比GET的安全性高,實質上POST跟GET都是明文傳輸,這可以通過類似WireShark工具看到。總之,Get是向伺服器發索取資料的一種請求,而Post是向伺服器提交資料的一種請求。

參考:http://www.tuicool.com/articles/J3maU3F