
一、HTTP协议概述1.1 什么是HTTPHTTPHyperText Transfer Protocol即超文本传输协议是互联网上应用最为广泛的一种网络协议规定了浏览器和服务器之间数据传输的规则。1.2 HTTP的特点特点说明基于请求-响应模型客户端发送请求服务器返回响应一对一无状态每次请求都是独立的服务器不保存客户端状态基于TCP/IP建立在TCP协议之上默认端口80HTTPS为443灵活可扩展支持多种数据类型Header可自定义无状态的特点服务器不会记住之前的请求信息。例如你登录了一个网站下次请求时服务器不知道你已经登录过。为了解决这个问题出现了Cookie、Session、Token等技术。1.3 HTTP协议版本版本特点HTTP/0.9最早的版本只支持GET方法无请求头HTTP/1.0增加POST/HEAD方法引入请求头和响应头每次请求后关闭连接HTTP/1.1引入持久连接Keep-Alive支持管道化目前最广泛使用的版本HTTP/2.0多路复用头部压缩二进制传输性能大幅提升HTTP/3.0基于QUIC协议UDP进一步降低延迟二、HTTP请求消息HTTP请求消息Request是客户端发送给服务器的数据由请求行、请求头、请求空行、请求体四部分组成。2.1 请求行请求行位于请求消息的第一行包含三个部分请求方法 请求URL 协议/版本示例GET /index.html HTTP/1.1 POST /login HTTP/1.1请求方法HTTP/1.1定义了8种请求方法方法说明使用场景GET请求指定资源获取页面、查询数据POST提交数据到服务器表单提交、登录、注册PUT更新指定资源修改全部数据DELETE删除指定资源删除数据HEAD获取响应头不返回响应体检查资源是否存在OPTIONS查询服务器支持的方法跨域预检请求TRACE回显服务器收到的请求测试诊断CONNECT建立隧道连接代理服务器 实际开发中最常用的是GET和POST。GET vs POST 区别对比项GETPOST参数位置在URL中?keyvalue在请求体中参数大小受URL长度限制约2KB无限制安全性参数暴露在URL中不安全参数在请求体中相对安全幂等性幂等多次请求结果相同非幂等可能产生不同结果缓存可以被缓存不会被缓存书签可以收藏为书签不能收藏为书签用途获取数据提交数据、修改资源2.2 请求头请求头位于请求行之后由多个键:值对组成用于告诉服务器客户端的信息。常见请求头请求头说明示例Host目标服务器域名和端口HTTP/1.1必需Host: www.example.comUser-Agent客户端浏览器信息User-Agent: Mozilla/5.0...Accept客户端可接收的响应类型Accept: text/html,application/jsonAccept-Language客户端可接收的语言Accept-Language: zh-CN,en-USAccept-Encoding客户端可接收的压缩格式Accept-Encoding: gzip, deflateContent-Type请求体数据类型Content-Type: application/jsonContent-Length请求体长度字节Content-Length: 45Connection连接方式Connection: keep-aliveReferer请求来源页面地址Referer: https://www.baidu.comCookie客户端Cookie数据Cookie: sessionIdabc123Authorization认证信息Authorization: Bearer token123Content-Type常用值值说明使用场景application/x-www-form-urlencoded表单数据默认普通表单提交multipart/form-data多部分表单数据文件上传application/jsonJSON格式数据RESTful APItext/xmlXML格式数据WebServicetext/plain纯文本简单文本传输2.3 请求空行请求空行是一个空行用于分隔请求头和请求体。2.4 请求体请求体用于存放POST等请求方法提交的数据。GET请求没有请求体。POST请求体示例表单提交POST /login HTTP/1.1 Host: www.example.com Content-Type: application/x-www-form-urlencoded Content-Length: 27 usernameadminpassword123456POST请求体示例JSON提交POST /api/user HTTP/1.1 Host: www.example.com Content-Type: application/json Content-Length: 52 {username:admin,password:123456,age:25}2.5 完整请求消息示例GET请求GET /search?qjava HTTP/1.1 Host: www.baidu.com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Accept: text/html,application/xhtmlxml Accept-Language: zh-CN,zh;q0.9 Accept-Encoding: gzip, deflate Connection: keep-alive Cookie: BAIDUID1234567890POST请求表单POST /login HTTP/1.1 Host: www.example.com Content-Type: application/x-www-form-urlencoded Content-Length: 29 User-Agent: Mozilla/5.0 usernamezhangsanpassword123456三、HTTP响应消息HTTP响应消息Response是服务器返回给客户端的数据由响应行、响应头、响应空行、响应体四部分组成。3.1 响应行响应行位于响应消息的第一行包含三个部分协议/版本 状态码 状态描述示例HTTP/1.1 200 OK HTTP/1.1 404 Not Found HTTP/1.1 500 Internal Server Error3.2 响应状态码状态码由三位数字组成第一位表示响应类别类别范围含义1xx100-199信息提示服务器已接收请求继续处理2xx200-299成功请求已被成功接收并处理3xx300-399重定向需要客户端进一步操作4xx400-499客户端错误请求有语法错误或无法完成5xx500-599服务器错误服务器处理请求时发生错误常见状态码状态码状态描述含义200OK请求成功201Created资源创建成功301Moved Permanently永久重定向302Found临时重定向304Not Modified资源未修改使用缓存400Bad Request请求参数错误401Unauthorized未授权需要身份认证403Forbidden禁止访问服务器拒绝请求404Not Found请求的资源不存在405Method Not Allowed请求方法不允许500Internal Server Error服务器内部错误502Bad Gateway网关错误503Service Unavailable服务不可用3.3 响应头响应头用于告诉客户端服务器的信息和响应内容的属性。常见响应头响应头说明示例Content-Type响应体数据类型和编码Content-Type: text/html; charsetUTF-8Content-Length响应体长度Content-Length: 1024Content-Encoding响应体压缩格式Content-Encoding: gzipServer服务器软件信息Server: Apache/2.4.41Date响应时间Date: Mon, 27 Jun 2026 08:00:00 GMTSet-Cookie设置CookieSet-Cookie: sessionIdabc123; Path/Location重定向地址3xx响应Location: https://www.new.comCache-Control缓存控制Cache-Control: no-cacheExpires资源过期时间Expires: Wed, 29 Jun 2026 08:00:00 GMTAccess-Control-Allow-Origin跨域允许来源Access-Control-Allow-Origin: *3.4 响应空行响应空行是一个空行用于分隔响应头和响应体。3.5 响应体响应体存放服务器返回给客户端的实际数据可能是HTML页面、JSON数据、图片等。响应体示例HTMLHTTP/1.1 200 OK Content-Type: text/html; charsetUTF-8 Content-Length: 123 html headtitle首页/title/head body h1欢迎来到JavaWeb专栏/h1 /body /html响应体示例JSONHTTP/1.1 200 OK Content-Type: application/json; charsetUTF-8 Content-Length: 56 {code:200,message:成功,data:{id:1,name:张三}}四、使用浏览器开发者工具查看HTTP4.1 打开开发者工具Chrome/Firefox/Edge按F12或CtrlShiftI右键页面 → 检查4.2 Network网络面板打开任意网页如https://www.baidu.com按F12打开开发者工具切换到Network标签刷新页面可以看到所有HTTP请求4.3 查看请求详情点击某个请求可以查看Headers请求头和响应头Payload请求体POST请求Preview/Response响应体Timing请求耗时详情五、综合案例用户登录的HTTP流程5.1 登录页面请求GETGET /login.html HTTP/1.1 Host: www.example.com User-Agent: Mozilla/5.0 Accept: text/html Cookie: sessionIdold123服务器响应HTTP/1.1 200 OK Content-Type: text/html; charsetUTF-8 Content-Length: 1024 !DOCTYPE html html headtitle登录/title/head body form action/login methodPOST input typetext nameusername / input typepassword namepassword / button typesubmit登录/button /form /body /html5.2 提交登录表单POSTPOST /login HTTP/1.1 Host: www.example.com Content-Type: application/x-www-form-urlencoded Content-Length: 29 Cookie: sessionIdold123 usernamezhangsanpassword123456服务器响应登录成功HTTP/1.1 302 Found Location: /home Set-Cookie: sessionIdnew456; Path/; HttpOnly Content-Length: 0服务器响应登录失败HTTP/1.1 200 OK Content-Type: text/html; charsetUTF-8 htmlbody用户名或密码错误/body/html本章小结知识点核心内容HTTP概念超文本传输协议浏览器和服务器通信的规则请求消息请求行方法URL协议 请求头 空行 请求体响应消息响应行协议状态码描述 响应头 空行 响应体GET vs POSTGET参数在URLPOST参数在请求体GET用于获取POST用于提交状态码1xx信息、2xx成功、3xx重定向、4xx客户端错误、5xx服务器错误常见请求头Host、User-Agent、Accept、Content-Type、Cookie常见响应头Content-Type、Set-Cookie、Location、Cache-Control如果本文对你有帮助欢迎点赞 、收藏 ⭐、关注专栏有问题欢迎在评论区交流讨论。