POST和GET為用戶端向伺服器傳遞資料的方法,浏覽器向伺服器進行資料傳送,若使用FORM,常用的傳送資料的方法是GET 和POST。
1.get是把參數資料隊列加到送出表單的ACTION屬性所指的URL中,值和表單内各個字段一一對應,在URL中可以看到,形式如下:
URL?var_name1=value1&var_name2=value2
即将表單内各字段名稱與其内容, 以成對的字元串連接配接, 置于表單ACTION 屬性所指的URL 後, 如:
http://211.64.32.2/login.php?name=abc&password=123
get傳送方式資料都會直接顯示在 URL 上,就像使用者點選一個連結一樣;
POST 方法通過 HTTP POST 機制,将表單内各字段名稱與其内容放置在 HTML 表頭(header)内一起傳送給伺服器端交由ACTION 屬性能所指的程式處理,使用者看不到這個過程,該程式會通過标準輸入(stdin)方式,将表單的資料讀出并加以處理。
2.通過GET 方法送出資料,可能會帶來安全性的問題。比如一個登陸頁面,當通過GET 方法送出資料時,使用者名和密碼将出現在URL 上。如果登陸頁面可以被浏覽器緩存或其他人可以通路客戶的這台機器。那麼,别人就可以從浏覽器的曆史記錄中,讀取到此客戶的賬号和密碼。是以,在某些情況下,GET 方法會帶來嚴重的安全性問題。
3.GET 方式傳輸的資料量非常小,一般限制在 2 KB 左右,但是執行效率卻比 POST 方法好;而POST 方式傳遞的資料量相對較大,它是等待伺服器來讀取資料,不過也有位元組限制,這是為了避免對伺服器用大量資料進行惡意攻擊。使用PHP,預設的POST_MAX_SIZE 是2M(通過配置php.ini 實作),如果你想利用POST 方式上傳軟體,就需要更改這個值了(我設定為20M 仍然能夠正确上傳檔案),但是倘若試圖使用GET 方式,就沒有可能實作這種功能。
4. 對于get方式,伺服器端用Request.QueryString擷取變量的值,對于post方式,伺服器端用Request.Form擷取送出的資料。
5. get安全性非常低,post安全性較高。但是執行效率卻比Post方法好。
建議:
1、get方式的安全性較Post方式要差些,包含機密資訊的話,建議用Post資料送出方式;
2、在做資料查詢時,建議用Get方式;而在做資料添加、修改或删除時,建議用Post方式;