14

HTTP02

简述

http请求由客户端发出,http相应则是在服务器端发出的。http协议是一种不保存状态的协议,即请求在发出并且得到相应后,即停止,并不做持久化处理。URL是URI的子集,URI为Uniform Resource Identifier , URL 为定位符,即所指示的是资源所在的位置,URI包括协议名,主机名,端口号(可选),ur等等.

http报文首部

http交换的信息称为http报文,可分为,报文首部,空行,报文主体。http请求和响应由以下东西所组成。

请求行

包含用于请求的方法,请求的URI 和http的版本。

  • GET:用来请求访问已经被URI识别的资源,经服务器识别解析后返回相关内容。如果请求的是文本信息,原样返回 ,如果是像CGI这样的则会返回处理后的结果。
  • POST:用来传输实体的主体。POST的主要木并不是获取主体内容的。
  • PUT:用来传输文件。想FTP协议一样,在请求报文的主体中包含文件内容。保存到请求URL所指向的位置中。隐患在于该方法并没有验证机制,因此不建议采用。
  • HEAD:获得报文首部。与GET方法类似,但是,HEAD方法请求返回的,并不包含报文主体部分。返回的是一些URI的相关信息
  • DELETE:删除文件,功能与PUT方法相似,并不具有验证机制,不建议采用。
  • OPTIONS: 用来查询针对请求URI指定资源的访问方法。
  • TRACE:追踪路径,让web服务器端将之前的请求通信换回给客户端的方法。发送请求的时候,在Max-Forwards 首部字段中填入 数值,每经过一个服务器端就将该数字间1,当数值刚好减到0的时候,就停止继续传输左后接受到的服务器端返回200状态码。隐患在于,每次中转时,都有可能被代理服务器路由更改,引发CST 攻击,不怎么常用。
  • CONNECT: 要求用隧道协议代理连接,实现用隧道协议进行TCP通信。主要通过SSL和TLS加密后进行隧道传输。

NOTE:

报文主体和实体主体一般是没有区别的,只有在传输中进行编码操作时,实体主体的内容发生变化时,才会和报文主体产生差异。

压缩传输的内容编码 是指应用在实体内容上的编码格式,并保持实体信息的原样压缩。编码后的实体由客户端接受并负责编码。

分割发送的分块传输编码 在传送大容量的数据时,通过把数据分割成多块,让浏览器分步显示页面。

发送多种数据的多部分对象集合 发送邮件时,邮件中可以发送图像,视频,图片,这是因为采用了MIME 机制。http协议也采用了多部分对象集合,发送一份报文主体内含有多类型实体。在使用这种方法传送数据事需要在,首部字段中加入 Conten-Type 。

如果想实现恢复从之前中断的地方开始重新下载就需要指定下载的实体范围,即,Range Request。

状态行

包含表明相应结果的状态码,原因短语和http版本。

2XX

2XX的结果表示请求已经被正常处理了。

200 OK 表示从客户端发来的请求在服务器端被正常处理了。

204 No Content :服务器接受的请求已经被成功处理,但是返回的相应报文中不包含有实体的主体部分。

206 Partial Content : 客户端进行了范围请求,并且服务器君根据Content-Range指定的范围返回相关内容。

3XX

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

302 Found:临时性重定向。

303 See Other : 功能与302相似,但是明确表示客户端应该使用GET方法请求资源。

304 Not Modified :表示客户端发送附带条件请求时,服务端允许请求访问资源,但是未满足条件的情况。304状态码返回时,不包含任何响应的主体部分。

4XX

表明客户端是发生错误的原因所在。

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

401 Unauthorized: 发送的请求需要有http认证的认证信息。

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

404 Not Found : 服务器上没有该资源。

5XX

服务器发生了错误

首部字段

一般有四种首部字段:通用首部,实体首部,请求首部,响应首部。

返回主页君

HTTP03