【深刻HTTP协议】

"HTTP是(Hyper Text Transfer Protocol)超文本传输协议的缩写.html

HTTP的发展是万维网协会(World Wide Web Consortium)和Internet工做小组IETF(Internet Engineering Task Force)合做的结果,(他们)最终发布了一系列的RFC.ajax

RFC 1945定义了HTTP/1.0版本,其中最著名的就是RFC 2616,RFC 2616定义了今天广泛使用一个版本——HTTP 1.1浏览器

------->缓存

HTTP协议(Hyper Text Transfer Protocol)超文本传输协议是用于从WWW服务器传输超文本到本地浏览器的传送协议.服务器

它可使浏览器更加高效,使网络传输减小。它不只保证计算机正确快速地传输超文本文档,还肯定传输文档中的哪一部分,以及哪部份内容首先显示(如文本先于图形)等.网络

@ide

 

HTTP响应模型
·
HTTP协议永远都是客户端发起请求,服务器回送响应,以下图:
在这里插入图片描述
这样就限制了使用HTTP协议,没法实如今客户端没有发起请求的时候,服务器将消息推送给客户端.性能

HTTP工做流程
·
一次HTTP操做称为一个事务,其工做过程可分为四步:测试

  1. 首先客户机与服务器须要创建链接。只要单击某个超级连接,HTTP的工做开始.
  2. 创建链接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号.
    后边是MIME(声明文本信息)信息包括请求修饰符、客户机信息和可能的内容.
  3. 服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码.
    后边是MIME信息包括服务器信息、实体信息和可能的内容.
  4. 客户端接收服务器所返回的信息并经过浏览器显示在用户的显示屏上,而后客户机与服务器断开链接.

·
若是在以上过程当中的某一步出现错误,那么产生错误的信息将返回到客户端,由显示屏输出.
对于用户来讲,这些过程是由HTTP本身完成的,用户只要用鼠标点击,等待信息显示就能够了.代理


HTTP 请求

HTTP请求方式大全
序号 方法 描述
1 GET 请求指定的页面信息,并返回实体主体。
2 HEAD 相似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
3 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会致使新的资源的创建和/或已有资源的修改。
4 PUT 从客户端向服务器传送的数据取代指定的文档的内容。
5 DELETE 请求服务器删除指定的页面。
6 CONNECT HTTP/1.1协议中预留给可以将链接改成管道方式的代理服务器。
7 OPTIONS 容许客户端查看服务器的性能。
8 TRACE 回显服务器收到的请求,主要用于测试或诊断。
9 PATCH 实体中包含一个表,表中说明与该URI所表示的原内容的区别。
10 MOVE 请求服务器将指定的页面移至另外一个网络地址。
11 COPY 请求服务器将指定的页面拷贝至另外一个网络地址。
12 LINK 请求服务器创建连接关系。
13 UNLINK 断开连接关系。
14 WRAPPED 容许客户端发送通过封装的请求。
15 Extension-mothed 在不改动协议的前提下,可增长另外的方法。
HTTP请求包括的内容

·
客户端连上服务器后,向服务器请求某个Web资源,称之为客户端向服务器发送了一个HTTP请求.
·
一个完整的HTTP请求包括的内容:一个请求行、若干消息头、实体内容.
·
以下图:
在这里插入图片描述

HTTP请求细节——请求头

·
请求行中的GET称之为请求方式,请求方式有:POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT,经常使用的有: GET、 POST
·
用户若是没有设置,默认状况下浏览器向服务器发送的都是GET请求,例如在浏览器直接输地址访问,点超连接访问等都是GET,用户如想把请求方式改成POST,可经过更改表单的提交方式实现.
·
无论POST或GET,都用于向服务器请求某个WEB资源,这两种方式的区别主要表如今数据传递上:若是请求方式为GET方式,则能够在请求的URL地址后以?的形式带上交给服务器的数据,多个数据之间以&进行分隔,例如:GET /mail/1.html?name=abc&password=xyz HTTP/1.1
·
GET请求的特色:在URL地址后附带的参数是有限制的,其数据容量一般不能超过1K.
·
若是请求方式为POST方式,则能够在请求的实体内容中向服务器发送数据,Post方式的特色:传送的数据量无限制.

HTTP请求细节——消息头

·
Accept
声明浏览器支持的数据类型
·
Accept-Charset
声明浏览器支持的字符集
·
Accept-Encoding
声明浏览器支持的压缩格式
·
Accept-Language
声明浏览器的语言环境
·
Host
声明浏览器要访问那台主机
·
If-Modified-since
声明浏览器缓存数据的时间
·
Referer
声明客户机是哪一个页面来的,用于防盗链
·
Connection
浏览器经过这个头告诉服务器,请求完后是断开连接仍是保持连接
·
X-Requested-with: XMLHttpRequest
表明经过ajax方式进行访问
·
User-Agent
请求载体的身份标识,浏览器标识
·
以上为HTTP请求中的经常使用消息头,以下图:
在这里插入图片描述


HTTP 响应

HTTP响应包括的内容

·
HTTP响应表明服务器向客户端回送的数据.
它包括:一个状态行、若干消息头、以及实体内容.
在这里插入图片描述

HTTP响应细节——状态行

·
状态行格式:
HTTP/1.1 200 OK HTTP版本号 状态码 缘由叙述<CRLF>
·
状态码用于表示服务器对请求的处理结果.
状态码是一个三位的十进制数,响应状态码分为5类.
在这里插入图片描述
·
常见的HTTP状态码
·
100 客户端应继续发送请求
客户端应当继续发送请求,客户端应当继续发送请求的剩余部分.
或若是请求已经完成,忽略这个响应.
·
101 转换协议
在发送完这个响应的最后空行后,服务器将会切换到在Upgrade消息头中定义的那些协议.
只有在切换到新的协议更有好处的时候才应该采起相似的措施.
·
102 继续处理
由WebDAV(RFC 2518)扩展的状态码,表明请求将被继续执行.
·
200 请求成功
表示这条请求执行成功了.
处理方式:得到响应的内容,进行处理.
·
201 请求完成
表示这条请求执行完成了
结果是建立了新资源,新建立的资源的URL可在响应的实体中获得.
处理方式在爬虫中不会遇到.
·
202 请求被接受
请求被接受了,但处理还没有完成.
处理方式:阻塞等待.
·
204 服务器以实现请求
服务器已经实现了请求,但未返回新的信息.
若是客户端是用户代理,则无需为此更新自身的文档视图.
处理方式:丢弃.
·
300
该状态码不被HTTP/1.0的应用程序直接使用,只是做为3XX类型回应的默认解释,存在多个可用的被请求资源.
处理方式:若程序中可以处理,则进一步处理;若程序中不可以处理,则丢弃.
·
301 永久重定向
请求到的资源都会分配一个永久的URL,这样就能够在未来经过该URL来访问此资源.
处理方式:重定向到分配的URL,永久重定向.
·
302 临时重定向
请求到资源在一个不一样的URL处临时保存.
处理方式:重定向到临时的URL,临时重定向.
·
304 请求的资源未更新
请求的资源未更新.
使用的是本地缓存文件(不会发送请求).
处理方式:丢弃.
·
400 非法请求
处理方式:丢弃.
·
401 未受权
处理方式:丢弃.
·
403 禁止
处理方式:丢弃.
·
404 没有找到
处理方式:丢弃.
·
500 服务器内部错误
服务器遇到了一个不曾预料的情况,致使它没法完成对请求的处理.
通常这个问题会在服务器端的源代码出现错误时出现.
即服务器问题,代码逻辑有问题.
·
501 服务器没法识别
服务器不支持当前请求须要的某个功能.
当服务器没法识别请求的方法时,将没法支持其对任何资源的请求.
·
502 错误网关
做为网关或代理工做的服务器尝试执行请求时,从上游服务器接收到无效的响应.

HTTP响应细节——经常使用响应头

·
Location
服务器经过这个头,来告诉浏览器跳到哪里
·
Server
声明服务器的型号
·
Content-Encoding
服务器经过这个头,告诉浏览器,数据的压缩格式
·
Content-Length
声明服务器回送的数据的长度
·
Content-Language
服务器经过这个头,告诉浏览器语言环境
·
Content-Type
声明服务器回送的数据的类型
·
Refresh
服务器经过这个头,告诉浏览器定时刷新
·
Content-Disposition
服务器经过这个头,告诉浏览器如下载方式打开数据
·
Transfer-Encoding
服务器经过这个头,告诉浏览器数据是以分块方式回送的
·
Expires: -1
控制浏览器不要缓存
·
Cache-Control: no-cache
·
Pragma: no-cache

相关文章
相关标签/搜索