服務(wù)熱線
153 8323 9821
全面比較HTTP GET與POST方法
1. 基本信息比較
|
屬性 |
GET方法 |
POST方法 |
|
歷史: |
通常使用GET方法發(fā)送的數(shù)據(jù)作為URL的一部分將會被瀏覽器保存起來 |
使用POST方法提交的數(shù)據(jù)則不會作為URL的一部分,當(dāng)然不會瀏覽器保存。 |
|
書簽: |
GET方法可能被瀏覽器當(dāng)作書簽(bookmark)保存 |
POST方法則不會 |
|
回退與重新提交: |
使用GET方法的頁面可以被回退并重新執(zhí)行而不通知用戶 |
POST方法會通知用戶再次提交 |
|
Form編碼類型: |
GET提交數(shù)據(jù)只支持 application/x-www-form-urlencoded |
POST支持application/x-www-form-urlencoded與multipart/form-data |
|
參數(shù): |
由于GET的參數(shù)一般都跟在URL后面,支持的數(shù)據(jù)大小一般在2K,有些服務(wù)器可以支持到64K。這個(gè)就是很多網(wǎng)頁超過64K就掛掉的真實(shí)原因。因?yàn)榉?wù)器限制了。 |
發(fā)送參數(shù),還可以是文件,大小在理論上沒有限制。 |
|
被攻擊: |
GET方法提交數(shù)據(jù)很容易被黑客攻擊,實(shí)施腳本綁架。 |
POST方法相對GET方法不是那么容易被黑客攻擊 |
|
數(shù)據(jù)類型限制: |
GET方法提交數(shù)據(jù)只能是文本數(shù)據(jù) |
POST方法則不受限制,二進(jìn)制文件也可以。 |
|
安全性: |
GET方法的安全性比POST方法要低一些,原因是數(shù)據(jù)做為URL的一部分是可見的。而且被瀏覽器存在歷史訪問記錄中。 |
POST方法的安全性相對GET要高一些。因?yàn)閰?shù)數(shù)據(jù)不能被瀏覽器作為URL的一部分而存入歷史訪問記錄中。 |
|
表單數(shù)據(jù)長度: |
由于表單數(shù)據(jù)做為URL的一部分而URL長度通常是有限制的。 |
POST方法沒有限制。 |
|
可用性: |
GET方法通常不被用來發(fā)送密碼與敏感信息。但是我發(fā)現(xiàn)還是有不少網(wǎng)站用GET來實(shí)現(xiàn)login。比如XXXX社區(qū),它把login方法放在一個(gè)jquery完成JavaScript腳本中,用GET請求完成。 |
POST方法可以用來發(fā)送密碼與其他敏感信息。 |
|
可見性: |
GET方法對所有人可見 |
POST方法的變量是不可見的在URL中 |
|
緩存: |
GET方法默認(rèn)被緩存,這個(gè)就是很多時(shí)候用GET方法獲取數(shù)據(jù)后面要跟個(gè)時(shí)間戳的原因 |
POST方法默認(rèn)不被緩存。 除非Response頭設(shè)置了Cache-Control或者Expires屬性值。 |
|
最大的變量值: |
GET支持最大為7607個(gè)字符 |
POST方法支持最大值為8MB |
|
應(yīng)用場合: |
GET最常用的場合是獲取數(shù)據(jù),瀏覽器獲取網(wǎng)頁時(shí)候絕大多數(shù)通過GET方法實(shí)現(xiàn),大多數(shù)瀏覽器下載也是使用GET方法獲取文件 |
POST主要用來向服務(wù)器提交數(shù)據(jù)。 |