一原理區別
一般在瀏覽器中輸入**訪問資源都是通過get方式;在form提交中,可以通過method指定提交方式為get或者post,預設為get提交
http定義了與伺服器互動的不同方法,最基本的方法有4種,分別是get,post,put,delete
url全稱是資源描述符,我們可以這樣認為:乙個url位址,它用於描述乙個網路上的資源,而http中的get,post,put,delete就對應著對這個資源的查,改,增,刪4個操作。到這裡,大家應該有個大概的了解了,get一般用於獲取/查詢資源資訊,而post一般用於更新資源資訊(個人認為這是get和post的本質區別,也是協議設計者的本意,其它區別都是具體表現形式的差異)。
(1)get提交,請求的資料會附在url之後(就是把資料放置在http協議頭中),以?分割url和傳輸資料,多個引數用&連線;例如:login.action?name=hyddd&password=idontknow&verify=%e4%bd%a0%e5%a5%bd。如果資料是英文本母/數字,原樣傳送,如果是空格,轉換為+,如果是中文/其他字元,則直接把字串用base64加密,得出如:%e4%bd%a0%e5%a5%bd,其中%xx中的xx為該符號以16進製表示的ascii。
post提交:把提交的資料放置在是http包的包體中。上文示例中紅色字型標明的就是實際的傳輸資料
因此,get提交的資料會在位址列中顯示出來,而post提交,位址列不會改變
(2)傳輸資料的大小:首先宣告:http協議沒有對傳輸的資料大小進行限制,http協議規範也沒有對url長度進行限制。
而在實際開發中存在的限制主要有:
get:特定瀏覽器和伺服器對url長度有限制,例如ie對url長度的限制是2083位元組(2k+35)。對於其他瀏覽器,如netscape、firefox等,理論上沒有長度限制,其限制取決於作業系統的支援。
因此對於get提交時,傳輸資料就會受到url長度的限制。
post:由於不是通過url傳值,理論上資料不受限。但實際各個web伺服器會規定對post提交資料大小進行限制,apache、iis6都有各自的配置。
(3)安全性:
.post的安全性要比get的安全性高。注意:這裡所說的安全性和上面get提到的「安全」不是同個概念。上面「安全」的含義僅僅是不作資料修改,而這裡安全的含義是真正的security的含義,比如:通過get提交資料,使用者名稱和密碼將明文出現在url上,因為(1)登入頁面有可能被瀏覽器快取,(2)其他人檢視瀏覽器的歷史紀錄,那麼別人就可以拿到你的賬號和密碼了,除此之外,使用get提交資料還可能會造成cross-siterequestforgery攻擊
GET,POST傳值總結
get和post是什麼?http協議中的兩種傳送請求的方法。http是什麼?http是基於tcp ip的關於資料如何在全球資訊網中如何通訊的協議。其實,get和post本質上兩者沒有任何區別。他們都是http協議中的請求方法。底層實現都是基於tcp ip協議。上述的所謂區別,只是瀏覽器廠家根據約定,...
PHP外部標量 GET POST傳值區別
php得外部變數是php在使用過程中規定好的一些變數,這個變數是已經規定好用法的。下面是幾個最常用的例子,我們將下面的表單命名為user.html 上面是很基礎的一段html 在這段 的主要功能是把使用者名稱和密碼,採用get方法,將資料傳送給reg.php 在上面 的第6行有標記 reg.php想...
傳值 傳位址 傳引用 的區別
傳值 傳位址 傳引用 1 傳值 優點 函式的 不會影響外部的實參 可讀性較高 缺點 傳參效率低 不能通過形參改變實參 對實參有保護作用 void swap int x,int y 2 傳位址 優點 傳參效率高 傳位址只需要4個位元組 確定 傳值變數大小不確定,有可能佔很大空間 可以通過形參改變實參 ...