get与post的区别

GET与POST的区别浅谈

(1) get把请求的数据放在URL上,即HTTP协议头上,其格式为:以?分割URL和传输数据,参数之间使用&符号连接。数据如果是英文字母或数字则原样发送,若是空格,则转换成+,若是中文或者是其他字符,则把字符串使用BASE64,“%”加上“字符串的16进制ASCII码”。    

     post会把数据存放在HTTP的包体(request body)。

(2)get提交的数据最大是2K(原则上url长度无限制,但是大多数浏览器会限制url在2k个字节)。

    post理论上传输数据的大小理论上没有限制。实际中IIS4中最大的传输量为80k,IIS5中为100k

(3)get产生一个TCP数据包,浏览器会把http  header和data一并发送出,服务器响应200。

    post产生两个TCP数据包,浏览器先发送header,服务器返回100  continue,浏览器在发送data,服务器响应200 ok(返回数据)。

(4)get在浏览器中回退时是无害的,post会再次提交请求。

(5)get请求会被浏览器主动缓存,而post基本不会。

(6)get请求只能进行url编码,而post支持多种编码方式。

(7)get参数会被完整的记录在浏览器历史记录中,而post参数不会被保留

综上所述,post不容易外泄参数,保证数据在出函数过程中的安全,但是因为其运行速度比get慢,所以在选用get与post方式时,需要比较其优劣。

原文地址:https://www.cnblogs.com/wawjandcsws/p/10474477.html