卡码笔记
首页
计算机基础
C++
Java
面经
笔记广场 (opens new window)
代码随想录 (opens new window)
首页
计算机基础
C++
Java
面经
笔记广场 (opens new window)
代码随想录 (opens new window)
  • 操作系统

  • 网络

    • 基础概念

      • TCP和UDP的区别是什么?
      • HTTP请求方式有哪些?
        • 简要回答
        • 详细回答
        • 知识拓展
      • GET请求和POST请求的区别?
      • HTTP中常见的状态码有哪些?分别是什么含义?
      • HTTP请求中的头部字段有哪些常见的类型?它们各自的作用是什么?
    • TCP 深入

    • HTTP 进阶

    • 安全与缓存

    • 综合应用

  • 数据库

# HTTP请求方式有哪些?

# 简要回答

  • HTTP/1.1 最初定义了 8种核心请求方法(RFC 2616, 1999):
    1. GET:获取资源,参数在URL中,安全且幂等。
    2. POST:提交数据(如表单数据),可能修改服务器状态。
    3. PUT:全量更新资源,幂等。
    4. DELETE:删除资源,幂等。
    5. HEAD:类似GET,仅返回响应头。
    6. OPTIONS:查询服务器支持的请求方法。
    7. TRACE:回显请求(因安全风险通常禁用)。
    8. CONNECT:建立代理隧道(如HTTPS)。
  • 注意事项:
    1. PATCH 是后续通过 RFC 5789(2010)添加的扩展方法,不属于 HTTP/1.1 最初定义的方法。

# 详细回答

# HTTP/1.1 最初定义的 8种核心请求方法

  1. GET:
    • 作用:请求指定资源,参数通过URL传递。
    • 特点:安全(不修改服务器资源)、幂等(多次请求结果一致)、可缓存(响应可被浏览器或代理缓存)。
    • 场景:数据查询、页面加载。
  2. POST:
    • 作用:提交数据(请求体携带数据)。
    • 特点:不安全(可能修改服务器状态,eg: 新增订单)、不幂等(重复提交可能产生不同结果,eg: 多次创建订单)。
    • 场景:表单提交、触发业务逻辑。
  3. PUT:
    • 作用:全量更新资源(客户端需提供完整数据)。
    • 特点:幂等(多次更新结果一致,如重复更新同一资源)、不安全(可能覆盖其他用户的修改)。
    • 场景:用户信息全量更新。
  4. DELETE:
    • 作用:删除指定资源。
    • 特点:幂等(多次删除同一资源效果相同,如资源不存在时返回相同状态)、不安全(直接修改服务器状态)。
    • 场景:删除文章、用户等资源。
  5. HEAD:
    • 作用:与GET类似,但服务器不返回响应体,仅返回响应头。
    • 特点:轻量(节省带宽,用于检查资源是否存在或是否更新,如Last-Modified)、安全、幂等。
    • 场景:检查资源是否存在或更新,eg: 验证链接有效性、资源缓存状态。
  6. OPTIONS:
    • 作用:查询服务器支持的请求方法,或检查跨域请求权限。
    • 特点:预检请求:浏览器自动发送OPTIONS请求进行CORS验证。
    • 场景:跨域API调用前的预检请求。
  7. TRACE:
    • 作用:回显客户端请求(用于调试)。
    • 特点:易引发安全风险(如XST攻击),通常禁用。
  8. CONNECT:
    • 作用:建立代理隧道(如HTTPS)。
    • 特点:由服务器/代理处理,不直接暴露给业务层。

# 扩展方法(非HTTP/1.1原生)

  1. PATCH:
    • 说明:来自RFC 5789(2010),注意,RFC 5789(2010)是独立扩展规范,仅新增PATCH方法,需显式支持,不涉及HTTP版本更新。
    • 作用:局部更新资源,需定义数据格式(如JSON Patch),客户端仅提交需修改的字段。
    • 特点:非幂等(多次局部更新可能导致不同结果)、灵活(需定义数据格式)。
    • 场景:修改用户的部分信息(如昵称)。

# 知识拓展

# HTTP请求方式的发展历程

  • As the following picture:
    image

# 为什么 HttpServlet 源码中只定义了七种方法?

  1. HttpServlet 基于 HTTP/1.1(RFC 2616, 1999) 设计,而 原始规范RFC 2616 定义的8种方法中,TRACE和CONNECT默认不推荐开发者直接使用,原因如下:
    • TRACE因安全风险(如XST攻击)通常被禁用。
    • CONNECT由服务器底层(如Tomcat)处理,无需业务代码干预。
  2. 因此,HttpServlet仅暴露了 GET、POST、PUT、DELETE、HEAD、OPTIONS 这6个常用方法,加上TRACE共7种。

# 不同HTTP版本支持的请求方法

  1. HTTP/1.0(RFC 1945, 1996):GET、POST、HEAD。
  2. HTTP/1.1(RFC 2616, 1999):GET、POST、PUT、DELETE、HEAD、OPTIONS、TRACE、CONNECT。
  3. HTTP/1.1(RFC 7231, 2014):同 RFC 2616(1999),目前HTTP/1.1的核心规范。
  4. HTTP/2(RFC 7540, 2015):兼容HTTP/1.1方法,未新增。
  5. HTTP/3(RFC 9114, 2022):同样兼容,未新增方法。
Last Updated: 3/10/2026, 6:08:48 PM

← TCP和UDP的区别是什么? GET请求和POST请求的区别? →

评论

验证登录状态...

侧边栏
夜间
卡码简历
代码随想录
卡码投递表🔥
2026群
添加客服微信 PS:通过微信后,请发送姓名-学校-年级-2026实习/校招
支持卡码笔记
鼓励/支持/赞赏Carl
1. 如果感觉本站对你很有帮助,也可以请Carl喝杯奶茶,金额大小不重要,心意已经收下
2. 希望大家都能梦想成真,有好的前程,加油💪