- GET和POST長度的限制問題
GET:
1、GET是通過URL提交數據,因此GET可提交的數據量就跟URL所能達到的最大長度有直接關系
2、實際上HTTP協議對URL長度是沒有限制的;限制URL長度大多數是瀏覽器或者服務器的配置參數
POST:
1、同樣的,HTTP協議沒有對POST進行任何限制,一般是受服務器配置限制或者內存大小
2、PHP下可以修改php.conf的postmaxsize來設置POST的大小
-
GET和POST的安全性
1、GET是通過URL方式請求,可以直接看到,明文傳輸
2、POST是通過請求header請求,可以開發者工具或者抓包可以看到,同樣也是明文的
3、GET請求會保存在瀏覽器歷史紀錄中,還可能會保存在Web的日志中
-
GET冪等/POST不冪等
冪等是指同一個請求方法執行多次和僅執行一次的效果完全相同。
- GET后退按鈕/刷新無害,POST數據會被重新提交(瀏覽器應該告知用戶數據會被重新提交)。
- GET書簽可收藏,POST為書簽不可收藏。 (???)
- GET能被緩存,POST不能緩存 。 (get相當於查詢,緩存有效果;post相當於增刪改,每次的數據不一樣,緩存沒有作用)
- GET編碼類型application/x-www-form-url,POST編碼類型encodedapplication/x-www-form-urlencoded 或 multipart/form-data。為二進制數據使用多重編碼。
- GET歷史參數保留在瀏覽器歷史中。POST參數不會保存在瀏覽器歷史中。 (???)
- GET對數據長度有限制,當發送數據時,GET 方法向 URL 添加數據;URL 的長度是受限制的(URL 的最大長度是 2048 個字符)。POST無限制。
- GET只允許 ASCII 字符。POST沒有限制。也允許二進制數據。
- 與 POST 相比,GET 的安全性較差,因為所發送的數據是 URL 的一部分。在發送密碼或其他敏感信息時絕不要使用 GET !POST 比 GET 更安全,因為參數不會被保存在瀏覽器歷史或 web 服務器日志中。
- GET的數據在 URL 中對所有人都是可見的。POST的數據不會顯示在 URL 中。