了解HTTP

4 篇文章 0 订阅
3 篇文章 0 订阅

一、HTTP协议

1、什么是HTTP协议?

客户端:请求访问文本或图像等资源的一端

服务器端:提供资源响应的一端

(1)HTTP协议用于客户端和服务端之间的通信,通过请求和响应的交换达成通信。

(2)HTTP协议规定,请求从客户端发出,最后服务器端响应该请求并返回。

(3)HTTP是一种不保存,即无状态协议。HTTP协议自身不具备保存之前发送过得请求或响应的功能。如果需要保存状态,需要使用cookie技术。

(4)HTTP协议使用URI定位互联网上的资源。

2、HTTP方法

方法作用
GET获取资源
POST传输实体主体
PUT传输文件
HEAD获得报文首部
DELETE删除文件
OPTIONS询问支持的方法
TRACE追踪路径
CONNECT要求用隧道协议连接代理

二、HTTP报文

1、什么是HTTP报文?

用于HTTP协议交互的信息被称为HTTP报文。

请求端(客户端)的HTTP报文叫做请求报文,响应端(服务器端)的叫做响应报文。

2、了解请求报文和响应报文

请求报文

请求报文具体内容
报文首部请求行请求首部字段、通用首部字段、实体首部字段、其他
空行
报文主体

响应报文

响应报文具体内容
报文首部状态行响应首部字段、通用首部字段、实体首部字段、其他
空行
报文主体

3、压缩传输的内容编码

  • gzip(GNU zip)
  • compress(UNIX系统的标准压缩)
  • deflate(zlib)
  • identity(不进行编码)

三、HTTP状态码

HTTP状态码负责表示客户端HTTP请求的返回结果、标记服务器端的处理是否正常、通知出现的错误等工作。

状态码的类别

状态码类别原因短语
1xxInformational(信息性状态码)接收的请求正在处理
2xxSuccess(成功状态码)请求正常处理完毕
3xxRedirection(重定向状态码)需要进行附加操作以完成请求
4xxClient Error(客户端错误状态码)服务器无法处理请求
5xxServer Error(服务器错误状态码)服务器处理请求错误

具体的状态码含义

状态码原因短语含义
200OK表示客户端发来的请求在服务器被正常处理了
204No Content代表服务器接收的请求已成功处理,但在返回的响应报文中不含实体的主体部分
206Partial Content表示客户端进行了范围请求,而服务器成功执行了这部分的GET请求
301Moved Permanently永久性重定向。表示请求的资源已被分配了新的URI
302Found临时性重定向。表示请求的资源已被分配了新的URI,希望用户本次能使用新的URI访问
303See Other表示由于请求对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源
304Not Modified表示资源已找到,但未符合条件请求
307Temporary Redirect临时重定向。
400Bad Request表示报文中存在语法错误
401Unauthorized表示发送的请求需要有HTTP认证的认证信息
403Forbiddent表明对请求资源的访问被服务器拒绝了
404Not Found表明服务器上无法找到请求的资源
500Internal Server Error表明服务器端在执行请求时发生了错误
503Service Unavailable表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。

四、与HTTP通信的应用程序

HTTP通信时,除客户端和服务器外,还有一些用于通信数据转发的应用程序:

  1. 代理

    代理是一种有转发功能的应用程序,接收客户端发送的请求后转发给其他客户端,不改变URI。

  2. 网关

    网关是转发其他服务器通信数据的服务器,工作机制跟代理类似,还能使通信线路上的服务器提供非HTTP协议服务。

  3. 隧道

    隧道是一条客户端与服务器连接的通信线路,使用SSL等加密手段进行通信,本身不会解析HTTP请求。隧道本身是透明的,客户端不用在意隧道的存在。

五、HTTP首部字段

1、通用首部字段

首部字段名说明
Cache-Control控制缓存的行为
Connection逐跳首部、连接的管理
Date创建报文的日期时间
Pragma报文指令
Trailer报文末端的首部一览
Transfer-Encoding指定报文主体的传输编码方式
Upgrade升级为其他协议
Via代理服务器的相关信息
Warning错误信息

2、请求首部字段

首部字段名说明
Accept用户代理可处理的媒体类型
Accept-Charset优先的字符集
Accept-Encoding优先的内容编码
Accept-Language优先的语言(自然语言)
AuthorizationWeb认证信息
Expect期待服务器的待定行为
From用户的电子邮箱地址
Host请求资源所在服务器
If-Match比较实体标记(ETag)
If-Modified-Since比较资源的更新时间
If-None-Match比较实体标记(与If-Match相反)
If-Range资源未更新时发送实体Byte的范围请求
If-Unmodified-Since比较资源的更新时间(与If-Modified-Since相反)
Max-Forwards最大传输逐跳数
Proxy-Authorization代理服务器要求客户端的认证信息
Range实体的字节范围请求
Refer对请求中URI的原始获取方
TE传输编码的优先级
User-AgentHTTP客户端程序的信息

3、响应首部字段

首部字段名说明
Accept-Ranges是否接受字节范围请求
Age推算资源创建经过时间
ETag资源的匹配信息
Location令客户端重定向至指定URI
Proxy-Authenticate代理服务器对客户端的认证信息
Retry-After对再次发起请求的时机要求
ServerHTTP服务器的安装信息
Vary代理服务器缓存的管理信息
WWW-Authenticate服务器对客户端的认证信息

4、实体首部字段

首部字段名说明
Allow资源可支持的HTTP方法
Content-Encoding实体主体适用的编码方式
Content-Language实体主体的自然语言
Content-Length实体主体的大小
Content-Location替代对应资源的URI
Content-MD5实体主体的报文摘要
Content-Range实体主体的位置范围
Content-Type实体主体的媒体类型
Expires实体主体的媒体类型
Last-Modified资源的最后修改时间

六、HTTP首部字段指令

1、通用首部字段

(1)Cache-Control,操作缓存的工作机制

指令含义
Cache-Control: public表明其他用户也可利用缓存
Cache-Control: private表示响应只以特定的用户作为对象
Cache-Control: no-cache不缓存过期的资源
Cache-Control: no-store不存储缓存
Cache-Control: maxage=604800缓存资源的缓存时间不超过604800秒(即一周),那么客户端就接收缓存的资源;如果max-age为0,表示缓存服务器不使用已缓存的资源,直接将请求转发给源服务器获取资源。
Cache-Control: s-maxage=604800跟max-age指令相同,不过s-maxage指令只适用于供多位用户使用的公共缓存服务器
Cache-Control: min-fresh=60在60秒以内如果有超过有效期限的资源都无法作为响应返回
Cache-Control: max-stale=3600在3600秒内,无论资源是否过期,客户端都会接收
Cache-Control: only-if-cached客户端仅在缓存服务器本地缓存目标资源的情况下才会要求其返回
Cache-Control: must-revalidate代理会向源服务器再次验证即将返回的响应缓存目前是否仍然有效
Cache-Control: proxy-revalidate要求所有的缓存服务器在接收到客户端带有该指令的请求返回响应之前,必须再次验证缓存的有效性
Cache-Control: no-transform无论是在请求还是在响应中,缓存都不能改变实体主体的媒体类型

(2)Connection

指令含义
Connection: 不再转发的首部字段名不再转发给代理的首部字段
Connection: close断开连接
Connection: Keep-Alive维持持续连接

(3)Date:表明创建HTTP报文的日期和时间

(4)Pragma

Cache-Control: no-cache
Pragma: no-cache

客户端要求所有的中间服务器不返回缓存的资源

(5)Trailer:事先说明在报文主体后记录了哪些首部字段

Trailer: Expires
...

0
Expires: Tue, 28 Sep 2014 23:49:49 GMT

指定首部字段Trailer的值为Expires

(6)Warning:警告码

警告码警告内容说明
110Response is stale(响应已过期)代理返回已过期的资源
111Revalidation failed(再验证失败)代理再验证资源有效性时失败
112Disconnection operation(断开连接操作)代理与互联网连接被故意切断
113Heuristic expiration(试探性过期)响应的使用期超过24小时
199Miscellaneous warning(杂项警告)任意的警告内容
214Transformation applied(使用了转换)代理对内容编码或媒体类型等执行了某些处理时
299Miscellaneous persistent warning(持久杂项警告)任意的警告内容

2、请求首部字段

指令含义
Accept:text/plain; q=0.3, text/htm通知服务器,用户代理能够处理的媒体类型及媒体类型的相对优先级
Accept-Charset: iso-8859-5, unicode-1-1; q=0.8通知服务器用户代理支持的字符集及字符集的相对优先顺序
Accept-Encoding: gzip, deflate告知服务器用户代理支持的内容编码及内容编码的优先级顺序
Accept-Language:zh-cn,zh;q=0.7, en-us告知服务器用户代理能够处理的自然语言集,以及自然语言集的优先级
Authorization告知服务器,用户代理的认证信息(证书值)
Expect告知服务器,期望出现的某种特定行为

3、响应首部字段

(1)Accept-Ranges

Accept-Ranges: bytes

告知客户端服务器是否能处理范围为byte的请求

(2)Server

Server: Apache/2.2.17(Unix)

告知客户端当前服务器上安装的HTTP服务器应用程序的信息

4、实体首部字段

(1)Allow

Allow: GET, HEAD

通知客户端能够支持Request-URI指定资源的所有HTTP方法

(2)Expires

Expires: Wed, 23 Sep 2016 21:36:01 GMT

七、HTTPS

HTTP+加密+认证+完整性保护 = HTTPS(HTTP Secure)

HTTPS是身披SSL外壳的HTTP

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值