1. GET在瀏覽器回退時(shí)是無(wú)害的,而POST會(huì)再次提交請(qǐng)求。
2. GET產(chǎn)生的URL地址可以被Bookmark,而POST不可以。
3. GET請(qǐng)求會(huì)被瀏覽器主動(dòng)cache,而POST不會(huì),除非手動(dòng)設(shè)置。
4. GET請(qǐng)求只能進(jìn)行url編碼,而POST支持多種編碼方式。
5. GET請(qǐng)求參數(shù)會(huì)被完整保留在瀏覽器歷史記錄里,而POST中的參數(shù)不會(huì)被保留。
6. GET請(qǐng)求在URL中傳送的參數(shù)是有長(zhǎng)度限制的,而POST么有。
7. 對(duì)參數(shù)的數(shù)據(jù)類(lèi)型,GET只接受ASCII字符,而POST沒(méi)有限制。
8. GET比POST更不安全,因?yàn)閰?shù)直接暴露在URL上,所以不能用來(lái)傳遞敏感信息。
9. GET參數(shù)通過(guò)URL傳遞,POST放在Request body中。
GET和POST使用場(chǎng)景:
若符合下列任一情況,則推薦用POST方法:
請(qǐng)求的結(jié)果有持續(xù)性的副作用,例如,數(shù)據(jù)庫(kù)內(nèi)添加新的數(shù)據(jù)行。若使用GET方法,則表單上收集的數(shù)據(jù)可能讓URL過(guò)長(zhǎng)。要傳送的數(shù)據(jù)不是采用7位的ASCII編碼。
若符合下列任一情況,則推薦用GET方法:
請(qǐng)求是為了查找資源,HTML表單數(shù)據(jù)僅用來(lái)幫助搜索。請(qǐng)求結(jié)果無(wú)持續(xù)性的副作用。收集的數(shù)據(jù)及HTML表單內(nèi)的輸入字段名稱(chēng)的總長(zhǎng)不超過(guò)1024個(gè)字符。