Get请求和Post请求的区别

面试题:去面试JAVA开发实习生时面试官问的问题,当时不懂,现在记录一下

面试官问GET和POST是HTTP请求的两种基本方法,说说它们的区别:

我当时说的是GET是向服务器发索取数据的一种请求,而POST是向服务器提交数据的一种请求,但是显然这并不是面试官想要的答案。面试官说我只是单纯从单词意思上的理解。于是面试回来之后看了几篇文章,收获良多,总结如下:

  1. 从本质上来说,他两并没有区别。都是HTTP协议里的发送请求的方法,HTTP底层是TCP/IP协议,所以这两者的底层也是TCP/IP协议,也就是GET和POST都是TCP链接,所做的事情是本质上是一样的。即你可以在GET请求中带上request body,在POST请求中带上url参数。
  2. 请求方式的区别:GET请求方式是将参数放入url后面,用?号分割和传输,多个参数用&符号。而POST请求方式是将请求数据放入HTTP请求包的包体里面进行传输。所以他们的区别是GET请求的数据会在地址栏里显示,而POST请求则不会。
  3. 在HTTP协议中其实并没有url设置限制条件,但是实际开发过程中不同的的浏览器对url参数进行了不同程度限制。既然对url进行了限制,那必然会影响GET请求方式。但是POST不是通过url方式传值,所以这一限制对POST请求没有影响。但是在实际开发过程中,不同的服务器也会对POST提交数据大小进行限制。
  4. 在TCP/IP协议中也存在一个重大区别,GET请求只产生一个TCP数据包,POST则需要产生两个TCP数据包。GET请求一个数据包好理解:将请求头header和数据data打包一起发送。POST请求需要两个数据包我的理解是类似与TCP/IP协议里面的三次握手四次挥手一样,不过POST只需要两次握手两次挥手,先将请求头header发送给服务器,服务器返回一个100状态码,然后POST收到100状态码再给服务器发送数据data,服务器收到在返回200状态码,传输过程就完成了。
  5. 安全方面的区别:由于GET请求只传输一个数据包,所以理论速度肯定比POST请求快,所以GET方式更加的高效。但是在实际开发过程中,网络环境好的情况下这个差距是非常小的,而在环境差的情况下,TCP数据包的完整性上,POST请求也有着非常大的优势。再者由于GET请求将传输数据放在url链接中,所有人可见,这本身就是非常不安全的行为。

参考原文1:https://www.cnblogs.com/logsharing/p/8448446.html
参考原文2:https://blog.csdn.net/yipiankongbai/article/details/24025633?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2defaultCTRLISTdefault-1-24025633-blog-91046081.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2defaultCTRLISTdefault-1-24025633-blog-91046081.pc_relevant_default&utm_relevant_index=1

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值