Get與Post最主要的差異就是Get是透過Url方式傳送數據,而Post並不讓用戶看到傳送的具體訊息,這個差異決定了兩者的用途。 Get方式主要用於搜索,而Post方式主要用於傳送使用者操作資訊至伺服器。以下是Get與Post詳細區別:
GET和POST的安全性
1、GET是透過URL方式請求,可以直接看到,明文傳輸。
2、POST是透過請求header請求,可以開發者工具或是抓包可以看到,同樣也是明文的。
3、GET請求會儲存在瀏覽器歷史紀錄中,也可能會儲存在Web的日誌中。
get提交,請求的資料會跟在url(統一資源定位)後面,安全性低
post提交,把提交的資料放在http套件的包體中,安全性高
GET和POST的資料大小
GET:特定瀏覽器和伺服器對URL長度有限制,例如IE對URL長度的限制是2083位元組( 2K 35)。對於其他瀏覽器,如Netscape、FireFox等,理論上沒有長度限制,其限制取決於作業系統的支援。 Get傳輸的資料量小,因為受URL長度限制,但效率較高;
POST:由於不是透過URL傳值,理論上資料不受限。 Post可以傳輸大量數據,所以上傳檔案時只能用Post方式;
傳輸資料字元格式不同
get限制Form表單的資料集的值必須為ASCII字符,無法透過request.setCharacterEncoding("utf-8");設定中文字符,伺服器得到的中文字符可能為亂碼!
post支援整個字元集ISO10646,可以透過request.setCharacterEncoding("utf-8");正確顯示中文字元。
伺服器端取得資料方式不同
Get在伺服器端$_GET;
Post在伺服器端$_POST
GET冪等,POST不冪等
冪等是指同一個請求方法執行多次和僅執行一次的效果完全相同。
1、依照RFC規範,PUT,DELETE和安全方法都是冪等的。雖說是規範,但服務端實作是否冪等是無法確保的。
2、引入冪等主要是為了處理同一個請求重複發送的情況,例如在請求回應前失去連接,如果方法是冪等的,就可以放心地重發一次請求。這也是瀏覽器在後退/刷新時遇到POST會給使用者提示的原因:POST語意不是冪等的,重複請求可能會帶來意想不到的後果。
3、例如在微博這個場景裡,GET的語意會被用在「看看我的Timeline上最新的20條微博」這樣的場景,而POST的語意會被用在「發微博、評論、按讚”這樣的場景中。
更多PHP相關知識,請造訪php中文網!
以上是php中get和post的差別是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!