前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >http协议的get和post方法的区别

http协议的get和post方法的区别

作者头像
全栈程序员站长
发布2022-09-12 12:15:14
5400
发布2022-09-12 12:15:14
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

http协议的get和post方法的区别

一、常见说法

相信许多人都或多或少知道get和post区别,大家最常说的几个区别无非是一下几个:

1. 请求报文格式不同,即Get使用Url或cookie传参数,而post使用body传参数:

a. POST请求格式 // 请求方法 请求url 协议/版本 POST /lance/query HTTP/1.1 // 请求头 Accept:image/gif.image/jpeg,*/* Accept-Language:zh-cn Content-Length: 28 // 请求的body,与请求头之前有一个空行 username=lance&password=abcd b. get请求格式 // 请求方法 请求url 协议/版本 POST /lance/query?username=lance&password=abcd HTTP/1.1 // 请求头 Accept:image/gif.image/jpeg,*/* Accept-Language:zh-cn

2. get的url会有长度限制,而Post数据则可以不受url的限制,可以很大
3. post比get安全,因为传递参数在url中不可见

如果是一个刚毕业的本科生述说这些还可以理解,如果你是已经工作N年后的老司机,你在说这些就实在是没法理解了。

二、事实真相

1. get和post与传递参数的方式没有关系

get和post是http协议定义的方法,方法、url、body和headers之间的组合使用,不受任何限制,即使用哪个方法与和使用什么传参方式没有任何限制(post也可以使用url传参,get也可以使用body传参)。但是HTML标准为了规范使用,确实做了get和post的使用说明,故大家会产生get和post传参方式的误解。但是现代许多服务器不仅支持使用浏览器访问,还支持浏览器之外的其他客户端使用,就没有考虑html标准的约定。

2. URL长度的限制

http协议并没有对url,body和headers做长度的限制,但是不同的浏览器和服务器在实现http协议时,为了不对服务造成影响,提高服务的可用性,一般都做了限制,不同的浏览器和服务器具体长度限制不同,许多服务可以通过配置设置最大数据请求长度: 浏览器:最大URL长度(转自:http://www.cnblogs.com/henryhappier/archive/2010/10/09/1846554.html,仅供参考) IE:2083个字符 Firefox:65,536个字符 Safari:80,000 Opera:190,000 Google chrome :8182

3. 安全问题

因为get和post与传递参数的方式没有关系,那也就不存在get比post更安全的问题了。但是针对html标准约定的get和post,一个用于获取数据,一个用于修改数据,带来的安全问题如下:

Web服务器客户端浏览器提交的数据时,首先将数据保存到内存接收缓存区中,然后在做以后的处理动作。由于post方法有Content-Length长度标记(Content-Length如果存在,则必须和消息内容的传输长度相等,如果过短则会截断,过长则会导致超时),Web服务器根据Content-Length大小创建一个等于或稍大的存储空间;对于get方法,因为不知道提交的数据大小,只能估计缓冲区长度,如果估计的很大而接收数据很小会造成内存浪费,而如果估计大小小于接收数据,就可能造成缓冲区溢出。

参考资料: 1.http://blog.sina.com.cn/s/blog_9f6de58301018axo.html

2.http://www.cnblogs.com/henryhappier/archive/2010/10/09/1846554.html

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/149541.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、常见说法
    • 1. 请求报文格式不同,即Get使用Url或cookie传参数,而post使用body传参数:
      • 2. get的url会有长度限制,而Post数据则可以不受url的限制,可以很大
        • 3. post比get安全,因为传递参数在url中不可见
        • 二、事实真相
          • 1. get和post与传递参数的方式没有关系
            • 2. URL长度的限制
              • 3. 安全问题
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档