HTTP学习

告诉服务器意图的http方法(方法名区分大小写)

使用方法的好处:可以指定请求URI按期望产生某种行为

  • GET:获取URI指定的服务器资源
  • POST:传输主体内容到服务器 -PUT:上传文件到服务器(由于却少验证机制,web服务中一般不用该方法)
  • HEAD:请求返回请求URI的首部(用来确认URI的有效性,确认资源的更新时间等)
  • DELETE:按请求URI删除指定资源(与put方法一样却少验证机制,web服务一般不使用该方法)
  • OPTIONS:询问请求的URI资源支持的http请求方法
  • TRACE:确认连接过程中发生的一系列操作(连接过程中可能会经过代理中中转,容易收到xst攻 (跨站追踪攻击),一般不用)
  • CONNECT:要求使用网络隧道与服务器建立通信(一般通过ssl或tcl将数据加密同过网络隧道交互)

持久连接节省通信量(HTTP keep-alive或HTTP connection reuse)

1. 持久连接

  • 特点:只要TCP没有一方没有提出断开连接,就一直保持连接状态
  • 目的:在一次简历TCP连接之后,进行多次的请求和响应动作(在HTTP/1.0早期,每次请求响应之后就要断开连接,如果一个页面包含图片等很多资源,那么客户端需要进行多次请求,造成网络通信十分缓慢,web网页请求请求十分缓慢,用户体验贼差,持久连接技术出现以后,大大提高了请求资源加载速度)
  • 在HTTP/1.1中,所有的连接都默认为持久连接

2. 管线化

  • 管线化:同时可以发送多个请求(正是由于持久连接的出现,可以同时发送多个请求,在持久连接没有出现之前或没哟使用管线化技术时,发送下一个请求的前提是必须收到上一个请求的响应)

使用Cookie的状态管理(通过在请求报文中增加参数来验证用户身份)

1. CooKie的工作过程

  • 客户端第一次向服务器发送请求(不携带cookie信息)
  • 服务器响应客户端,并在响应的报文首部加Set-CooKie字段,将该cookie值存在服务器中并作为用户状态的保存数据
  • 当客户端收到服务器响应时,cookie通知客户端保存响应中的Set-Cookie中的信息,当下次发送请求的时候讲cookie加入请求头部
  • 当服务器再次收到该客户端发来的请求时,会根据头部的cookie信息去服务器查询该客户端的状态信息

HTTP报文

1. HTTP报文的结构

  1. 报文首部
  • 请求行(请求报文):包含请求方法+请求的URI资源+HTTP版本
  • 状态行(响应报文):包含HTTP版本+响应结果的状态码+原因短语
  • 首部字段
    • 请求首部(请求报文)
    • 响应首部(响应报文)
    • 通用首部
    • 实体首部
  • 其他:可能包含HTTP在RFC中未指定的首部,例如cookie首部
  1. 空行(CR+LF):用来划分报文首部和报文主体,不一定要有报文主体
  2. 报文主体

2. 编码提升速率(压缩)

  • 压缩传输的内容编码:通过内容编码将实体部分进行压缩,使请求或相应的报文变小
  • 分块发送的分块传输编码:由于浏览器只有收到响应的全部内容才会将响应加载,所以通过分块编码,将发送的主体分成多块并进行编码传输,当浏览器收到分块时的响应时会先将部分页面加载

3. 发送多种数据的多数据集合

MIME(Multipurpose Internet Mail Extension,多用途换互联网邮件扩展),服务端可以将文件、图片或视频一同响应给客户端,这正是因为使用了MIME来容纳多种不同类型的数据
多数据对象集合(multipart,使用时需要在首部加上Content-Type):

  • multipart/form-data:在web表单文件上传时使用
  • multipart/byteranges:状态码206(Partial Content,部分内容)响应内容包括了多个范围的内容时使用

4. 范围请求(Range Request)

在以前,当文件或图片发送一半时断开连接,需要重新发送,出现了范围请求技术可以去请求指定范围的数据

  • Range:bytes=5000-10000:请求5000到10000字段的数据
  • Range:bytes=5000-:请求5000到结束大小的字段数据
  • 请求结束服务器会响应206(Partial Content),如果响应处理了多个范围请求,会在首部加上Content-Type=multipart/byteranges,如果服务器不能处理范围请求,则返回200(OK)并返回完整数据

5.内容协商

内容协商是指客户端与服务器对响应内容进行交涉,返回给客户端最适合的内容,一般会从语言、字符集、编码方式进行交涉

  • Accept:用户代理可处理的媒体类型,以及媒体类型的相对优先级(qf)
  • Accept-Charset:优先的字符集
  • Accept-Encoding:优先的内容编码(压缩)
  • Accept-Language:优先的语言(自然语言)
  • Content-Language:实体主体的自然语言

返回结果的HTTP状态码(3位数字+原因短语)

状态码类别:

  • 1xx:服务器正在处理请求
  • 2xx:服务器处理请求成功
    • 200(OK):
    • 204(no content):执行成功,但无数据返回,不回去更新请求之前的页面,put等方法的响应码
    • 206(Partical Content):范围请求
  • 3xx:服务器重定向
    • 302(Found):临时性重定向,通知客户端去访问新的URI(响应请求首部的Location)
    • 304(not modified):在http首部可以指定只返回某天之后修改过的资源,如果指定的某天之后没有修改过,服务器返回304,与重定向没有联系
  • 4xx:服务器无法处理请求
    • 410(Gone):告知服务器资源被删除
    • 400:请求出错,由于语法格式有误,服务器无法理解此请求。不作修改,客户程序就无法重复此请求。
    • 404(Not Found):请求资源不存在,传说中的404房间
    • 401(Unauthorized):认证失败
    • 403(Forbidden):请求资源禁止访问
    • 405(Method Not Alllowed):服务器不支持客户端的请求方法
  • 5xx:服务器内部错误
    • 500(Internal Server Error):服务器内部错误
    • 503(Server Unavailable):服务器此时正在超负载或停机维护(响应首部字段的Retry-After)

与HTTP协作的web服务器

1. 用单台虚拟主机实现多个域名

  • 当将多个网站配置在同一台web托管服务器上时,DNS会将这些网站的域名解析为同一IP;党访问这些网站时要指定主机名或URI(host)

2.通信数据转发程序:代理、网关、隧道

  1. 代理:扮演了服务器与客户端的“中间人”,接收客户端的请求并转发给服务器,接收服务器的响应并返回给客户端,转发时会在首部Via字段标识经的代理服务器,同时具有缓存功能
  2. 网关:与代理工作机制相像,但可以提供非 HTTP协议服务,可以对客户端与网关的通信进行加密,提供安全服务
  3. 隧道:服务器与客户端通过ssl对数据进行加密,通过隧道建立安全的连接

3. 保存资源的缓存

  • 代理服务器:当客户端向服务器请求URI资源,会经过代理服务器,代理服务器会保存资源的一份副本并且将资源响应给客户端,当客户端下一次向服务器请求相同的资源时,代理服务器将保存的资源副本直接响应给客户端,不去请求服务器,提高了请求处理效率,降低了网络流量
  • 客户端:将资源保存在本地,与上工作原理大致相同
  • 缓存时间:保存在代理或客户端的资源不能保证是最新的资源,存在缓存时间问题,会根据了客户端的要求或缓存时间等因素去向服务器确认缓存有效期,若确认失败则返回新的资源并缓存

HTTP首部

1.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值