HTTP 详解

HTTP协议(HyperText Transfer Protocol,超文本传输协议)是互联网上应用最为普遍的一种网络协议,用于从WWW服务器传输超文本到本地浏览器的传输协议。它可使浏览器更加高效,使网络传输减小。它不只保证计算机正确快速地传输超文本文档,还肯定传输文档中的哪一部分,以及哪部份内容首先显示(如文本先于图形)等。css

HTTP是客户端浏览器或其余程序与Web服务器之间的应用层通讯协议。在Internet上的Web服务器上存放的都是超文本信息,客户机须要经过HTTP协议传输所要访问的超文本信息。HTTP包含命令和传输信息,不只可用于Web访问,也能够用于其余因特网/内联网应用系统之间的通讯,从而实现各种应用资源超媒体访问的集成。html

HTTP协议工做流程

  1. 客户端和服务器之间创建一条链接
  2. 链接创建后,客户端向服务器发起一个请求(request)
  3. 服务器收到一个请求后,给客户端一个响应(应答,response)
  4. 客户端收到响应后作进一步处理

HTTP请求方法

  • GET请求会向数据库发索取数据的请求,从而来获取信息,该请求就像数据库的select操做同样,只是用来查询一下数据,不会修改、增长数据,不会影响资源的内容,即该请求不会产生反作用。不管进行多少次操做,结果都是同样的。
  • PUT请求是向服务器端发送数据的,从而改变信息,该请求就像数据库的update操做同样,用来修改数据的内容,可是不会增长数据的种类等,也就是说不管进行多少次PUT操做,其结果并无不一样。
  • POST请求同PUT请求相似,都是向服务器端发送数据的,可是该请求会改变数据的种类等资源,就像数据库的insert操做同样,会建立新的内容。几乎目前全部的提交操做都是用POST请求的。
  • DELETE请求顾名思义,就是用来删除某一个资源的,该请求就像数据库的delete操做

就像前面所讲的同样,既然PUT和POST操做都是向服务器端发送数据的,那么二者有什么区别呢。。。POST主要做用在一个集合资源之上的(url),而PUT主要做用在一个具体资源之上的(url/xxx),通俗一下讲就是,如URL能够在客户端肯定,那么可以使用PUT,不然用POST。
综上所述,咱们可理解为如下:数据库

一、POST /url 建立  
二、DELETE /url/xxx 删除 
三、PUT /url/xxx 更新
四、GET /url/xxx 查看

Http定义了与服务器交互的不一样方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是统一资源定位符,咱们能够这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操做浏览器

#### 请求方式: get与post请求缓存

  • GET提交的数据会放在URL以后,也就是请求行里面,以?分割URL和传输数据,参数之间以&相连,如EditBook?name=test1&id=123456.(请求头里面那个content-type作的这种参数形式,后面讲) POST方法是把提交的数据放在HTTP包的请求体中.
  • GET提交的数据大小有限制(由于浏览器对URL的长度有限制),而POST方法提交的数据没有限制.
  • GET与POST请求在服务端获取请求数据方式不一样,就是咱们本身在服务端取请求数据的时候的方式不一样了,这句废话昂。

HTTP请求报文格式

HTTP请求报文由3部分组成(请求行+请求头+请求体):安全

image
①是请求方法,HTTP/1.1 定义的请求方法有8种:GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS、TRACE,最常的两种GET和POST,若是是RESTful接口的话通常会用到GET、POST、DELETE、PUT。服务器

②为请求对应的URL地址,它和报文头的Host属性组成完整的请求URL网络

③是协议名称及版本号。post

④是HTTP的报文头,报文头包含若干个属性,格式为“属性名:属性值”,服务端据此获取客户端的信息。网站

⑤是报文体,它将一个页面表单中的组件值经过param1=value1&param2=value2的键值对形式编码成一个格式化串,它承载多个请求参数的数据。不但报文体能够传递请求参数,请求URL也能够经过相似于“/chapter15/user.html? param1=value1&param2=value2”的方式传递请求参数。

对照上面的请求报文,咱们把它进一步分解,你能够看到一幅更详细的结构图:
image

HTTP响应报文格式

①报文协议及版本;

②状态码及状态描述;

③响应报文头,也是由多个属性组成;

④响应报文体,即咱们真正要的“干货”。

和请求报文相比,响应报文多了一个“响应状态码”,它以“清晰明确”的语言告诉客户端本次请求的处理结果。
image

image

HTTP状态码

全部HTTP响应的第一行都是状态行,依次是当前HTTP版本号,3位数字组成的状态代码,以及描述状态的短语,彼此由空格分隔。

状态代码的第一个数字表明当前响应的类型:

  • 1xx 消息(信息性状态码)——请求已被服务器接收,继续处理
  • 2xx 成功(成功状态码)——请求已成功被服务器接收、理解、并接受
  • 3xx 重定向(重定向状态码)——须要后续操做才能完成这一请求
  • 4xx 请求错误(客户端错误状态码)——请求含有词法错误或者没法被执行
  • 5xx 服务器错误(服务端错误状态码)——服务器在处理某个正确请求时发生错误

HTTP和Https

HTTP:是互联网上应用最为普遍的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可使浏览器更加高效,使网络传输减小。

HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,所以加密的详细内容就须要SSL。

HTTPS协议的主要做用能够分为两种:一种是创建一个信息安全通道,来保证数据传输的安全;另外一种就是确认网站的真实性。

HTTP协议传输的数据都是未加密的,也就是明文的,所以使用HTTP协议传输隐私信息很是不安全,为了保证这些隐私数据能加密传输,因而网景公司设计了SSL(安全套接字层协议)(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。简单来讲,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。

HTTPS和HTTP的区别主要以下:

一、https协议须要到ca申请证书,通常免费证书较少,于是须要必定费用。

二、http是超文本传输协议,信息是明文传输,https则是具备安全性的ssl加密传输协议。

三、http和https使用的是彻底不一样的链接方式,用的端口也不同,前者是80,后者是443。

四、http的链接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

在浏览器中输入网址以后执行会发生什么?

(1). 浏览器查询 DNS,获取域名对应的IP地址:具体过程包括浏览器搜索自身的DNS缓存、搜索操做系统的DNS缓存、读取本地的Host文件和向本地DNS服务器进行查询等。对于向本地DNS服务器进行查询,若是要查询的域名包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析(此解析具备权威性);若是要查询的域名不禁本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析(此解析不具备权威性)。若是本地域名服务器并未缓存该网址映射关系,那么将根据其设置发起递归查询或者迭代查询;

(2). 浏览器得到域名对应的IP地址之后,浏览器向服务器请求创建连接,发起三次握手;

(3). TCP/IP连接创建起来后,浏览器向服务器发送HTTP请求;

(4). 服务器接收到这个请求,并根据路径参数映射到特定的请求处理器进行处理,并将处理结果及相应的视图返回给浏览器;

(5). 浏览器解析并渲染视图,若遇到对js文件、css文件及图片等静态资源的引用,则重复上述步骤并向服务器请求这些资源;

(6). 浏览器根据其请求到的资源、数据渲染页面,最终向用户呈现一个完整的页面。

相关文章
相关标签/搜索