关于Get与Post的区别总结如下表
区别内容 | Get | Post |
---|---|---|
浏览器回退 | 无影响 | 会再次提交请求 |
URL地址 | 可被BookMark | 不可被BookMark |
编码方式 | 只能URL编码 | 支持多种编码方式 |
浏览器历史记录 | 会被完整保留 | 不会被保留 |
浏览器cache | 会被主动cache | 除手动方式外不会被cache |
参数是否有长度限制 | 有 | 没有 |
参数数据类型 | 只接受ASCII字符 | 没有限制 |
参数传递方式 | 直接在URL中传参 | 在Request body中传参 |
补充
另外需要注意:
Get产生一个TCP数据包,浏览器会把http header和data一并发送出去,服务器响应200(返回数据)。
而Post产生两个TCP数据包,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
因此Post所消耗时间会比Get更多。
但是现今网络传输技术与硬件不断地发展,正常网络下,发一次数据包与发两次数据包时间相差近乎可以忽略。
而在网络环境较差的情况下,则更应该使用Post,因为两次发送数据包比一次发送在验证数据包的完整性方面更具优势。
但是上面所述区别在不同的情况是不一样的,比如有的浏览器在进行Post发包的时候就只发送一次。