• 面试网络-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 多平台发布

  • 相关阅读:
    解析短视频美颜SDK:技术原理与应用
    YOLO-World:实时开放词汇目标检测
    Linux网络编程:UDP协议和TCP协议
    git更新代码时显示“auto-detection of host provider took too long“移除方法
    Linux基本用户操作
    CST初级教程 七
    Spring注册Bean系列--方法5:@Import+ImportBeanDefinitionRegistrar
    python_data_analysis_and_mining_action-master-5
    开源ESP32智能小车机械臂控制板Baize_Carboard(支持mixly)
    彻底搞通服务发现的原理和实现
  • 原文地址:https://blog.csdn.net/u012496940/article/details/127611279