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