http 请求报文的结构

一个完整的 HTTP 请求由 4 部分组成

  1. 请求行(Request Line)
  2. 请求头(Request Headers)
  3. 空行(CRLF)
  4. 请求体(Request Body)

1. 请求行(必背)

格式:

请求方法 + URL + 协议版本

示例:

GET /index.html HTTP/1.1

  • 请求方法:GET、POST、PUT、DELETE、HEAD、OPTIONS 等
  • URL:请求资源路径
  • HTTP 版本:HTTP/1.1、HTTP/2、HTTP/3

2. 请求头(Header)

一系列键值对,告诉服务器一些附加信息。

常见请求头:

  • Host:域名
  • User-Agent:浏览器 / 客户端信息
  • Content-Type:请求体类型(application/json、form-data 等)
  • Cookie:携带的 Cookie
  • Connection:keep-alive 等
  • Accept:可接受的响应类型
  • Authorization:权限认证

3. 空行(非常重要)

必须有一个空行,作用是:

分隔请求头和请求体

哪怕没有请求体,这个空行也不能少,这是 HTTP 协议规定的。

4. 请求体(Body)

  • GET 请求一般没有请求体
  • POST、PUT 等才有
  • 存放提交的数据:表单、JSON、文件等

完整示例(你一看就懂)

GET /user HTTP/1.1          // 请求行
Host: www.example.com       // 请求头
User-Agent: Mozilla/5.0
Accept: */*
Connection: keep-alive
                            // 空行(必须有)
                            // GET 无请求体

POST /login HTTP/1.1        // 请求行
Host: www.example.com
Content-Type: application/json
Content-Length: 38
                            // 空行
{"username":"admin","password":"123456"}  // 请求体

面试高频考点(背下来)

  1. GET 和 POST 的区别(必问)
  2. GET 有没有请求体?→ 协议没禁止,但浏览器和服务器一般都不支持 / 忽略,所以面试回答:GET 没有请求体
  3. 空行的作用:分隔请求头和请求体
  4. Content-Type 常见值:application/jsonapplication/x-www-form-urlencodedmultipart/form-data(文件上传)
全部评论

相关推荐

03-18 13:01
已编辑
东南大学 C++
1.先简单介绍一下自己。实习项目2.你这几个项目和实习里,哪一个你参与最多、做得最深入?3.你们这个项目是用 C++ 开发的,是吧?4.你们这个分级缓存方案是怎么实现的?5.你们底层这套缓存系统是怎么实现的?6.比如两秒过期、十秒过期,这种过期机制具体怎么做?7.缓存怎么做淘汰?8.这种惰性淘汰方案会有什么问题?9.你了解过定时器是怎么实现的吗?10.如果一秒后触发一个任务,它怎么精准地在一秒后执行?11.如果有很多定时任务,比如几万个、几十万个,它们是怎么被精准触发的?12.你刚才说的轮询方案有什么问题?13.如果不用朴素轮询,还有什么优化思路?14.如果定时任务会不断动态插入,这个结构怎么维护?15.你怎么理解优先队列?八股16.你平时主要用的语言都是 C++ 吗?17.你了解过 C++ 现在最新版本到什么了吗?18.在 C++11 的基础上,后面版本普遍有什么新特性?19.你了解过 C++ 里的协程吗?20.你怎么理解协程?21.协程切换的时候,切换的上下文是什么?22.什么场景适合用协程?23.协程主要解决什么问题?24.HTTP 有了解吗?25.HTTPS 有了解吗?26.HTTPS 是怎么保证安全性的?27.HTTPS 的大概流程你了解吗?28.HTTPS 里用到的加密方式是什么?29.为什么 HTTPS 要先非对称、后对称这样设计?30.你说的“传输效率更高”具体指什么?31.另外两个 AI 项目是你自己做的吗?32.你怎么理解 Agent?33.前面那个 AI 聊天系统是用 C++ 做的吗?34.你还了解过其他语言或技术栈吗?35.你有了解过 C++ 里面智能指针怎么实现的吗?36.你能讲一下智能指针的原理吗?37.你为什么会选 SQLite?38.Redis 你有了解过吗?39.Redis 作为缓存时,怎么做容灾?40.Redis 的可靠性怎么保证?41.Redis 的持久化你了解吗?42.Redis 持久化具体有哪两种方式?无算法题面试官迟到了五分钟,整体面试比较随性,前面让我自己介绍了一大堆然后开始提问,八股原理上的细节答不太上来,比之前几次面试感觉要好,但说不准,感觉好没准就挂,感觉不好可能就过3.18 还是挂掉了,准备复活赛
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务