GET 和 POST 的主要区别表现在数据传递上


① GET


在请求 URL 后面以 ? 的形式跟上发给服务器的参数,多个参数之间用 & 隔开,比如


http://ww.test.com/login?username=123&pwd=234&type=JSON


由于浏览器和服务器对 URL 长度有限制,因此在 URL 后面附带的参数是有限制的,通常不能超过 1KB


②POST


发给服务器的参数全部放在 请求体 中


理论上, POST 传递的数据量没有限制(具体还得看服务器的处理能力)


选择 GET 和 POST 的建议



如果要传递大量数据,比如文件上传,只能用 POST 请求



GET 的安全性比 POST 要差些,如果包含机密 \ 敏感信息,建议用 POST



如果仅仅是索取数据(数据查询),建议使用 GET



如果是增加、修改 、 删除数据,建议使用 POST



GET 请求跟随在URL之后的请求长度是有限的,过长的请求参数,或如文件上传这类的大量数据就不适合 GET 请求,而应该改用 POST



GET 请求的请求参数会出现在地址栏上,敏感性或有安全性考虑的请求参数(如信用卡号,用户名,密码等)就不应该使用 GET 请求来发送。



POST 请求的参数不会出现在地址栏上,所以无法加入浏览器的书签中(Bookmark),如果有些页面是根据请求参数来作不同的画面呈现(如论坛的文章发表),而你希望可以让用户设定书签,以便日后可以直接点击书签浏览,则应该使用 GET 请求。



有些浏览器会依据为你工作来缓存(Cache)数据,如果网址是相同的URL,则会直接从浏览器的缓存中获取数据,而不会真正发送请求至服务器上查询最新的数据,如果不希望服务器状态改变了,而浏览器仍从缓存中取得旧数据,则可以改用 POST 请求( GET 请求也可以避免缓存,例如在网址上附上时间戳,让每次GET请求的地址都不相同)