面试网络-0x01 http中的GET和POST区别?

alt

GET: 获取资源,请求获取一个指定的资源
POST: 传输实体主体,将实体提交到指定的资源 —— 通常导致服务器上的状态变化副作用

官方的比较(可忽略)
官方的比较(可忽略)

GET: 用户获取信息,无副作用、幂等的、可缓存
POST: 修改服务器上的数据, 有副作用、非幂等、不可缓缓存

GETPOST
GET /index.php?name=qiming.c&age=22 HTTP/1.1POST /index.php HTTP/1.1
name=qiming&age=22
  1. 当不携带参数的时候,两者的第一行方法名不同而已
  2. GET参数在url后面,POST在request body中。
    但是:这个并不是http规范,只是***约定***, 也就是说GET/POST都可以将参数放在url后面和body中,这要看我们的服务器是否支持
  3. 本质上,它们是没有区别的, 是基于TCP来进行传输的

常见问题

0x00参数位置: url上的参数写法是固定的么?参数在?后面,用& 分割

解析报文的过程是通过获取TCP数据,用正则等工具从数据中获取Header和Body,从而提取参数。 也就是我们主要自己约定参数能够在服务器解析出来就可以了。

0x01参数长度:url参数长度限制?
http协议中没有对body和url的长度进行限制,对url限制的大多数是浏览器和服务器的原因。
浏览器:每一种浏览器都会对url的长度有所限制
服务器:url太长,消耗过多资源,为了性能和安全(防止恶意构造长url来攻击)。

0x02可见性/安全性:POST方法比GET方法安全?
可见性:POST是比GET相对安全的
服务器修改:GET比POST安全,因为GET请求并不会修改服务器状态
传输:它们都不安全,因为http是明文传输 —— https

0x03数据包:POST会产生两个数据包?
1)GET : 浏览器会把header和data一并发送出去,服务器响应200
2)POST:浏览器先发送header, 服务器响应100 continue,浏览器再发送data,服务器响应200。 常规浏览器操作,firefox只发送一次


```总结```: GET和POST的区别主要是在语义上,一个是获取资源,一个是提交主体,在参数【约定】、缓存、幂等上存在主要差异。本质上http是基于tcp进行传输数据的,所以本质上是没区别的,主要是在语义上不同而产生了两个方法。

参考:
https://blog.fundebug.com/2019/02/22/compare-http-method-get-and-post/)


公众号:技术小难
简书
博客园 链接需要替换
CSDN
知乎
掘金
segmentfault

本文由 mdnice 多平台发布

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值