HTTP协议

简单介绍了HTTP协议

1.环境

2.了解WEB

Web使用一种名为HTTP(HyperText Transfer Protocol,超文本运输协议)的协议作为规范,完成从客户端到服务器端等一系列运作流程。Web是建立在HTTP(TCP/80)协议上通信的。
WWW(万维网)这一名称,是Web浏览器当年用来浏览超文本的客户端应用程序时的名称。现在表示这一系列的集合,简称Web

  • 页面的文本标记语言HTML(HyperText Markup Language,超文本标记语言)
  • 作为文档传递协议的HTTP
  • 指定文档所在地址的URL(Uniform Resource Locator,统一资源定位符)
  • URI(Uniform Resource Identifier,统一资源标识符)
    URI用字符标识某一互联网资源,URL表示资源的地点(互联网上所处的位置)
    URL是一种具体的URI
    HTTP/1.1是目前主流的HTTP协议版本

3.HTTP协议简介

客户端和服务器
图片
HTTP是不保存状态的协议,目的是为了更快的处理大量事务。不能进行事务的关联。
隐含参数和Cookie技术,能协助HTTP解决无状态问题

HTTP Method GET

GET:获取资源

通过URL传
请求访问已被URI识别的资源。指定的资源经服务器端解析后返回相应内容。

如果请求的资源是文本,保持原样返回;如果是像CGI(Common Gateway Interface,通用网关借口)那样的程序,返回经过执行后的输出结果。

HTTP Method POST

POST:传输实体主体

以下用POST

  • 请求中包含数据更新等副作用时
  • 发送敏感信息时(防止Referer安全隐患)
  • 发送的信息量很多时(URL长度有限)

副作用:指除了获取资源(内容)以外的其他操作。比如,追加/更新/删除服务器端的数据、购买商品、注册/删除用户等操作。

HTTP Method PUT

PUT:传输文件

存在安全隐患一般文件上传采用POST

HTTP Method HEAD

HEAD:获得报文首部

与GET方法一样,只是不返回报文主体部分,用于确认URI的有效性及资源更新的日期时间等。

HTTP Method DELETE

用来删除文件,是与PUT相反的的方法。DELETE方法按请求URI删除指定的资源
图片

Cookie的工作原理


4.HTTP报文

请求端的HTTP报文叫请求报文,响应端的HTTP报文叫响应报文。

请求报文:

  • 报文首部:
    • 请求行
    • 请求首部字段
    • 通用首部字段
    • 实体首部字段
    • 其他
  • 空行:
  • 报文主体
    图片

响应报文:

  • 报文首部:
    • 状态行
    • 响应首部字段
    • 通用首部字段
    • 实体首部字段
    • 其他
  • 空行
  • 报文主体
    图片

5.HTTP状态码

【功能】:当客户端向服务器发送请求时,描述返回的请求结果。

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

3XX:

  • 301 Moved Permanently:永久重定向
  • 302 Moved Temporarily:临时重定向 希望用户(本次)能使用新的URI访问
  • 303 See Other:要求用户(用GET定向获取请求的资源)
  • 304 Not Modified:访问页面没有修改
  • 307 Temporary Redirect:希望把POST改为GET

4XX:

  • 400 Bad Request:语法错误等造成错误请求
  • 401 Unauthorized:需要授权认证
  • 403 Forbidden:访问权限不够
  • 404 Not Found:没有找到

5XX:

  • 500 Internal Server Error:服务器端执行请求发生错误
  • 503 Service Unavailable:服务器暂时处于超负载或正在进行停机维护,无法处理请求

6.HTTP首部

HTTP报文首部:

通用首部字段:

首部字段名说明参数
Cache-Control控制缓存的行为private,max-age=0,no-cache等
Connection逐跳首部、持久连接的管理Keep-Alive/close
Date创建报文的日期时间Tue,03 Jul 2012 04:40:59 GMT
Pragma报文指令
Trailer说明报文主体后记录了哪些字段
Transfer-Encoding指定报文主体的传输编码方式chunked等
Upgrade升级为其他协议是否可使用更高的版本进行通讯
Via追踪客户端与服务器之间的请求和响应报文的传输路径
Warning告知用户一些与缓存有关的警告[警告码][警告的主机:端口号]“[警告内容]”([日期时间])

请求首部字段:

首部字段名说明参数
Accept用户代理可处理的媒体类型type/subtype形式;text/html,text/plain等
Accept-Charset优先的字符集utf-8等
Accept-Language优先的语言zh-cn等
Accept-Encoding优先编码内容gzip等
Authorization通知服务器,用户代理的认证信息转码认证
Expect期待服务器的特定行为例:100-continue
From用户的电子邮箱地址例:info@hacker.jp
Host请求资源所在服务器必须包含;例:www.baidu.com
If-Match条件请求例:”123456
If-Modified-Since比较资源的更新时间
If—None-Match比较实体标记(与If-Match相反)
If-Range资源未更新时发送实体Byte的范围请求
If-Unmodified-Since比较资源的更新时间(与If-Modified-Since相反)
Max-Forwards最大传输逐跳数
Proxy-Authorization代理服务器要求客户端的认证信息
Range实体的字节范围要求
Referer对请求URI的原始获取方
TE传输编码的优先级
User-AgentHTTP客户端程序的信息系统,浏览器,ip地址
Cookie服务器接收到的Cookeie信息

响应首部字段:

首部字段名说明参数
Accept-Ranges是否接受字节范围请求
Age推算资源创建经过时间例:600
ETag客户端实体标示
Location令客户端重定向至URI重定向目的地
Prox-Authenticate代理服务器对客户端的认证信息
Retry-After对再次发起请求的时机要求
ServerHTTP服务器的安装信息具有安全隐患
Vary代理服务器缓存的管理信息
WWW-Authenticate服务器对客户端的认证信息访问认证
Set-Cookie开始状态管理所使用的Cookie信息NAME=VALUE;expires=DATE;path=PATH;domain=域名;Secure;HttpOnly

实体首部字段:

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

HTTP首部字段是由首部字段名和字段值构成的

  • Content-Type: 报文主体对象的类型
  • Keep-Alive:

7.HTTPS协议简介

缺点:

  • 通讯使用明文(不加密),内容可能会被窃听
  • 不验证通信方的身份,因此有可能遭遇伪装
  • 无法证明报文的完整性,所以有可能已遭篡改

HTTP+加密+认证+完整性保护=HTTPS
图片

8.HTTP的认证

  • BASIC认证(基本认证)
  • DIGEST认证(摘要认证)
  • SSL客户端认证
  • FormBase认证(基于表单认证)
  • Windows统一认证(Keberos认证,NTLM认证)