HTTP中GET和POST方法有什么不同

本文深入解析了HTTP请求方法GET和POST的区别,包括安全性、数据大小限制、数据可见性及网络性能等方面,帮助读者理解何时使用何种请求方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Get和post的区别

  • GET在浏览器回退时是无害的,而POST会再次提交请求;

  • GET产生的URL地址可以被bookmark,而POST不可以;

  • GET请求会被浏览器主动cache,而POST不会,除非手动设置;

  • GET请求只能通过URL编码,而POST支持多种编码方式;

  • GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留;

  • 对于参数的数据类型,GET只接受ASCII字符,而POST没有限制;

  • GET参数通过URL传递,POST放在Request body中;

  • 采用GET方法向服务器上传数据时,一般将数据添加到URL后面,并且二者用 “ ?”连接,各个变量之间用 “ & ”连接。由于对URL的长度存在限制,因此采用这种方法能上传的数据量非常小,通常在1024左右

  • 采用POST方法传递数据时通过HTTP请求的附件进行的,传送的数据量更大一些,一般默认为不受限制的

  • GET方法上传的数据是添加在URL中,因此上传的数据被彻底 “ 暴露 ”出来
    ,本身存在安全隐患,尤其是当用户需要向服务器提交一些敏感信息时

  • POST方法向服务器提交的内容在URL中并没有明文显示,对用户都是不可见的,所以安全性更好一些

  • 在传输过程中,GET 产生一个TCP数据包;POST 产生两个TCP数据包。
    对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
    对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。因为POST需要两步,时间上消耗的要多一点,看起来GET比POST更有效。

  • 据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。(不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次)

总结:GET主要用来获取服务端资源信息,类似于查询;POST能够从服务端获取资源外,同时向服务端上传数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值