【读书笔记】Http协议学习笔记(一)

HTTP(超文本传输协议)是一种运行于应用层的协议,HTTP协议是在Web上进行数据交换的基础,是一种“客户端-服务器端”协议。

无状态协议

HTTP是一种无状态协议,也就是说在HTTP这个级别,协议对于发送过的请求和响应都不做持久化处理。HTTP/1.1为了解决因无状态而导致的业务处理变得棘手的情况,为了保持状态,引入了Cookie技术。
Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态。Cookie会根据从服务器端发送的响应报文内的一个叫做Set-Cookie的首部字段信息,通知客户端保存Cookie,当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中写入Cookie的值之后发送出去。服务端发现客户端发送过来的Cookie之后,会去检查究竟是从哪一个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息。

HTTP常见方法

方法作用支持的版本
GET获取资源吗1.0 , 1.1
POST传输实体主体,将客户端数据传输给服务端1.0 , 1.1
PUT传输文件1.0 , 1.1
HEAD和GET方法一样,只是不返回报文的主体部分,用于确认URI的有效性和资源更新的日期时间1.0 , 1.1
DELETE按URI删除指定的资源1.1
OPTIONS查询针对请求URI指定的资源支持的方法1.1
TRACE让web服务器端将之前的请求通信返回给客户端的方法1.1
CONNECT与代理服务器通信时建立隧道,实现用隧道协议进行TCP通信。主要使用SSL和TLS协议把通信内容加密后经网络隧道传输1.1
LINK建立和资源之间的联系1.0
UNLINK断开连接关系1.0

状态码

状态码有3位数字和原因短语组成

类别原因短语
1XXInformational(信息类状态码)接受的请求正在处理
2XXSuccess(成功状态码)请求正常处理完毕
3XXRedirection(重定向状态码)需要进行附加操作以完成请求
4XXClient Error(客户端错误状态码)服务器无法处理请求
5XXServer Error(服务端错误状态码)服务器处理请求出错
  • 200 OK
    请求正常处理

  • 204 No Content
    请求处理成功,但没有资源可返回

  • 206 Partial Content
    客户端进行了范围请求,而服务端处理了这部分请求

  • 301 Moved Permanently
    永久性重定向,表示请求的资源已被分配了新的URI

  • 302 Found
    临时性重定向,与301不同之处在于它不会更新书签

  • 303 See Other
    请求志愿URI发生更新,需要重新使用GET方法请求资源

  • 304 Not Modified
    采用GET方法的请求报文中包含If-Match,If-Modified-Since,If-None-Match,If-Range,If-Unmodified-Since中任一首部,服务器端允许请求访问资源,但因为未满足条件后,直接返回304Not Modified (服务器端资源未改变,可直接使用客户端未过期的缓存),不包含任何响应的主体部分。

  • 307 Temporary Redirect
    临时重定向

  • 400 Bad Request
    请求报文中存在语法错误

  • 401 Unauthorized
    发送的请求需要通过HTTP认证,返回含有401的响应必须包含一个适用于被请求资源的WWW-Authenticate首部用以质询(challenge)用户信息。

  • 403 Forbidden
    请求资源的访问被服务器拒绝了

  • 404 Not Found
    服务器上无法找到请求的资源

  • 500 Internal Server Error
    服务器端在执行请求时发生了错误

  • 503 Service Unavailable
    服务器暂时处于超负载或正在进行停机维护,现在无法处理请求

HTTP报文

用于HTTP协议交互的信息被称为HTTP报文。HTTP报文大致可分为报文首部和报文主体两块,两者由最初出现的空行划分,通常,不一定要有报文主体。


在这里插入图片描述

  • 请求行,包含请求的方法,请求URI和HTTP版本
  • 状态行,包含表明响应结果的状态码,原因短语和HTTP版本
  • 首部字段,包含表示请求和响应的各种条件和属性的各类首部,一般有四种首部:通用首部,请求首部,响应首部和实体首部
  • 其他

HTTP首部字段

构成Http报文的要素之一,它能起传递重要信息的作用

首部字段结构

首部字段名:字段值

例如在HTTP首部中以Content-Type这个字段来表示报文主体的对象类型

Content-Type: text/html

4种Http首部字段类型

  • 通用首部字段:请求报文和响应报文都会使用的字段
字段名说明
Cache-Control控制缓存的行为
Connection逐跳首部,连接的管理
Date创建报文的日期时间
Pragma报文指令
Ttrailer报文末端的首部一览
Transfer-Encoding指定报文主体的传输编码方式
Upgrade升级为其他协议
Via代理服务器的相关信息
Warning错误通知
  • 请求首部字段:客户端向服务端发送请求报文时使用的首部,补充了请求的附加内容,客户端信息,响应内容相关优先级等信息。
字段名说明
Accept用户代理可处理的媒体类型
Accept-Charset优先的字符集
Accept-Encoding优先的内容编码
Accept-Language优先的语言
AuthorizationWeb认证信息
Expect期待服务器的特定行为
From用户的电子邮箱地址
Host请求资源所在的服务器
If-Match比较实体标记(ETag)
If-Modified-Since比较资源的更新时间
If-None-Match比较实体标记(与If-Match相反)
If-Modified-Since比较资源的更新时间(与If-Modified-Since相反)
Max-Forwards最大传输逐跳数
Proxy-Authorization代理服务器要求客户端的认证信息
Range实体的字节范围请求
Referer对请求中URI的原始获取方
TE传输编码的优先级
User-AgentHTTP客户端程序的信息
  • 响应首部字段:从服务器端向客户端返回响应报文时使用的首部,补充了响应的附加内容,也会要求客户端附加额外的内容信息。
字段名说明
Accept-Ranges是否接受字节范围的请求
Age推算资源创建经过的时间
ETag资源的匹配信息
Location令客户端重定向到指定的URI
Proxy-Authenticate代理服务器对客户端的认证信息
Retry-After对再次发起请求的时机要求
ServerHTTP服务器的安装信息
Vary代理服务器缓存的管理信息
WWW-Authenticate服务器对客户端的认证信息
  • 实体首部字段:针对请求报文和响应报文底实体部分使用的首部。补充了资源内部的更新时间等与实体有关的信息
字段名说明
Allow资源可支持的HTTP方法
Content-Encoding实体主体适用的编码方式
Content-Language实体主体的自然语言
Content-Length实体主体的大小(单位:字节)
Content-Location替代对应资源的URI
Content-MD5实体主体的报文摘要
Content-Range实体主体的位置范围
Content-Type实体主体的媒体类型
Expires实体主体过期的日期和时间
Last-Modified资源最后修改日期和时间

端到端首部和逐跳首部

HTTP首部字段将定义成缓存代理和非缓存代理的行为,分为2种类型:

End-to-end Header 端到端首部:此类别的首部会转发个请求/响应的最终接收目标,且必须保存在由缓存生成的响应中,另外规定它必须被转发。

Hop-by-hop Header 逐跳首部:只对单次转发有效。HTTP/1.1和之后的版本中,如果要使用逐跳首部,需提供Connection首部字段。

除了以下8个为逐跳首部字段,其余均为端到端首部

  • Connection
  • Keep-Alive
  • Proxy-Authenticate
  • Proxy-Authorization
  • Trailer
  • TE
  • Transfer-Encoding
  • Upgrade
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值