從 HTTP 報文層面來看,GET 請求將資訊放在 URL,POST 將請求資訊放在請求體中。這一點使得 GET 請求攜帶的資料量有限,因為 URL 本身是有長度限制的,而 POST 請求的資料存放在報文體中,因此對大小沒有限制。而且從形式上看,GET 請求把資料放 URL 上感覺不太安全,而 POST 請求把資料放在請求體裡似乎安全一些。實際上想要獲取 POST 請求中的內容還是很容易的,因此兩者在安全性上其實沒有太大差異,想要實現安全的資訊傳輸還是得靠 HTTPS。
從資料庫層面來看,GET 符合冪等性和安全性,而 POST 請求不符合。這個其實和 GET/POST 請求的作用有關。按照 HTTP 的約定,GET 請求用於檢視資訊,不會改變伺服器上的資訊;而 POST 請求用來改變伺服器上的資訊。正因為 GET 請求只檢視資訊,不改變資訊,對資料庫的一次或多次操作獲得的結果是一致的,認為它符合冪等性。安全性是指對資料庫操作沒有改變資料庫中的資料。
從其他層面來看,GET 請求能夠被快取,GET 請求能夠儲存在瀏覽器的瀏覽記錄裡,GET 請求的 URL 能夠儲存為瀏覽器書籤。這些都是 POST 請求所不具備的。快取是 GET 請求被廣泛應用的根本,他能夠被快取也是因為它的冪等性和安全性,除了返回結果沒有其他多餘的動作,因此絕大部分的 GET 請求都被 CDN 快取起來了,大大減少了 Web 伺服器的負擔。
從 HTTP 報文層面來看,GET 請求將資訊放在 URL,POST 將請求資訊放在請求體中。這一點使得 GET 請求攜帶的資料量有限,因為 URL 本身是有長度限制的,而 POST 請求的資料存放在報文體中,因此對大小沒有限制。而且從形式上看,GET 請求把資料放 URL 上感覺不太安全,而 POST 請求把資料放在請求體裡似乎安全一些。實際上想要獲取 POST 請求中的內容還是很容易的,因此兩者在安全性上其實沒有太大差異,想要實現安全的資訊傳輸還是得靠 HTTPS。
從資料庫層面來看,GET 符合冪等性和安全性,而 POST 請求不符合。這個其實和 GET/POST 請求的作用有關。按照 HTTP 的約定,GET 請求用於檢視資訊,不會改變伺服器上的資訊;而 POST 請求用來改變伺服器上的資訊。正因為 GET 請求只檢視資訊,不改變資訊,對資料庫的一次或多次操作獲得的結果是一致的,認為它符合冪等性。安全性是指對資料庫操作沒有改變資料庫中的資料。
從其他層面來看,GET 請求能夠被快取,GET 請求能夠儲存在瀏覽器的瀏覽記錄裡,GET 請求的 URL 能夠儲存為瀏覽器書籤。這些都是 POST 請求所不具備的。快取是 GET 請求被廣泛應用的根本,他能夠被快取也是因為它的冪等性和安全性,除了返回結果沒有其他多餘的動作,因此絕大部分的 GET 請求都被 CDN 快取起來了,大大減少了 Web 伺服器的負擔。