HTTP基础必备知识 HTTP版本改变

本文详细介绍了HTTP协议的基础知识,包括其工作原理、消息结构、请求与响应过程、常用的状态码及首部字段等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HTTP必备知识

HTTP协议(HyperText Transfer Protocol) 超文本传输协议,基于TCP/IP通信协议来传递数据

原理

  1. 工作于C/S架构上,浏览器作为客户端向服务器发送请求(request),服务器:Apache(80)、Tomcat(8080)、nginx(80)、IIS等,括号内为默认端口
  2. 服务器收到请求后,向客户端发送响应消息(response)
    TCP/IP通信传输流
    图1 TCP/IP通信传输流

HTTP是无连接的,每次连接只处理一个请求
HTTP是无状态的,对于事务处理没有记忆能力
HTTP是媒体独立的,可指定MIME-type来规定传输数据类型.

HTTP消息结构

使用统一资源标识符(URI)来传输数据和建立连接

客户端请求消息

客户端发送一个HTTP请求到服务器的请求消息包括以下格式:

  1. 请求行(request line):包含请求方法,URI、HTTP版本
  2. 请求头部(header)
  3. 空行
  4. 请求数据

如下图:
客户端请求消息

图二 客户端请求消息

服务器响应消息

包括:

  1. 状态行:响应结果状态码,原因短语,HTTP版本
  2. 消息报头
  3. 空行
  4. 响应正文

实例

请求与响应报文实例

图三 请求与响应报文实例
GET /hello.txt HTTP/1.1
User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
Host: www.example.com
Accept-Language: en, mi
HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
ETag: "34aa387-d-1568eb00"
Accept-Ranges: bytes
Content-Length: 51
Vary: Accept-Encoding
Content-Type: text/plain

HTTP 请求方法

HTTP1.0 GET、POST、HEAD方法
HTTP1.1 新增OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法

序号方法描述
1GET请求指定资源
2POST提交表单,传输实体数据包含在请求头中
3HEAD类似GET,用于获取报头
4PUT传输文件,会导致资源建立或已有资源修改
5DELETE删除文件
5CONNECT要求用隧道代理方式
5OPRIONS询问支持的方法
5TRACE追踪路径
5PATCH是对 PUT 方法的补充,用来对已知资源进行局部更新

HTTP状态码

常见的HTTP状态码:

  • 200 - 请求成功
  • 301 - 资源(网页等)被永久转移到其它URL
  • 404 - 请求的资源(网页等)不存在
  • 500内部服务器错误

状态码分类

分类描述
1XX信息,服务器收到请求,需要请求者继续执行操作
2XX成功,请求正常处理完毕
3XX重定向,需要进行附加操作以完成请求
4XX客户端错误,服务器无法处理请求
5XX服务器状态,服务器处理请求出错
状态码原因短码具体描述
200OK请求成功。一般用于GET与POST请求
301Moved Permanently永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。
302Found临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI
400Bad Request客户端请求的语法错误,服务器无法理解
404Not Found服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面
405Method Not Allowed客户端请求中的方法被禁止
408Request Time-out服务器等待客户端发送的请求时间过长,超时
500Internal Server Error服务器内部错误,无法完成请求
501Not Implemented服务器不支持请求的功能,无法完成请求
505HTTP Version not supported服务器不支持请求的HTTP协议的版本,无法完成处理
503Service Unavailable由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中

HTTP首部字段

通用首部字段

Cache-Control 控制缓存行为
Date 创建报文日期时间
Connection 逐跳首部、连接的管理 close/Keep-Alive(HTTP1.1默认)
Transfer-Encoding 传输编码方式 chunkde 分块

请求首部字段

Accept 用户代理可处理的首部 (格式和权重)
在这里插入图片描述

Accept-Charset 优先使用的字符集 GB2312
Accept-Encoding 优先使用的内容编码 gzip
Accept-Language 优先使用语言 en-us zh-cn
Host 请求资源所在服务器 主机地址
User-Agent HTTP客户端程序的信息
Authorization Web认证信息 证书值

响应首部字段

Accept-Ranges 是否接受字节范围请求
Age 推算资源创建经过时间
Location 令客户端重定向至指定URI
Proxy-Authorization 代理服务器对客户端的认证信息
Server HTTP 服务器的安装信息

实体首部字段

Allow 资源可支持的HTTP方法
Content-Encoding 实体主体适用的内容编码
Content-Language 实体主体的使自然语言
Content-Length 实体主体的大小
Content-Location 替代对应资源的URI
Content-Type 实体主体的媒体类型 和编码 charset
Expires 实体主体过期日期时间
Last-Modified 资源最后修改日期时间

逐跳首部字段(除此都是端到端首部)

Connection、Keep-Alive、Upgrade、Proxy-Authorization、Proxy-Authenticate、Transfer-Encoding、TE

Cookie 相关字段

  1. Set-Cookie 开始状态管理所使用的Cookie信息 响应首部字段 发出者为服务器
    参数:HttpOnly 防止脚本攻击 Secure 仅在HTTPS安全通信时才会发送Cookie expires 过期时间 name=value(必需)
  2. Cookie 服务器接收到的Cookie信息 请求首部字段

常见媒体格式

  1. 常见的媒体格式类型如下:

text/html : HTML格式
text/plain :纯文本格式
text/xml : XML格式
image/gif:gif图片格式
image/jpeg :jpg图片格式
image/png:png图片格式

  1. 以application开头的媒体格式类型:

application/xhtml+xml :XHTML格式
application/xml: XML数据格式
application/atom+xml :Atom XML聚合格式
application/json: JSON数据格式
application/pdf:pdf格式
application/msword : Word文档格式
application/octet-stream : 二进制流数据(如常见的文件下载)
application/x-www-form-urlencoded : 中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)

  1. 另外一种常见的媒体格式是上传文件之时使用的:

multipart/form-data : 需要在表单中进行文件上传时,就需要使用该格式

HTTP1.1改进

  1. 默认长连接
  2. 支持只发送头信息(节约了带宽)
  3. 支持host域 一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。
  4. 缓存处理 引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。
  5. 错误通知 在HTTP1.1中新增了24个错误状态响应码

HTTP2.0改进

  1. 多路复用 同一个连接并发处理多个请求
  2. 请求头压缩 HTTP2.0使用HPACK算法对header的数据进行压缩
  3. 服务器推送
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值