zoukankan      html  css  js  c++  java
  • HTTP请求详解

    HTTP请求详解

     

    使用http协议进行前后端通信

    web使用一种名为HTTP(HyperText Transfer Protocol),超文本传输协议作为规范,完成从客户端到服务端等一系列运作过程。web是建立在HTTP协议上通信的。

     
    1.HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤:
    复制代码
    (1)建立TCP连接
    在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,
    因此Internet又被称作是TCP/IP网络。
    HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能,才能进行更层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80
    (2)Web浏览器向Web服务器发送请求命令 一旦建立了TCP连接,Web浏览器就会向Web服务器发送请求命令 例如:GET/sample/hello.jsp HTTP/1.1
    (3)Web浏览器发送请求头信息 浏览器发送其请求命令之后,还要以头信息的形式向Web服务器发送一些别的信息,之后浏览器发送了一空白行来通知服务器,它已经结束了该头信息的发送。
    (4)Web服务器应答 客户机向服务器发出请求后,服务器会客户机回送应答, HTTP/1.1 200 OK 应答的第一部分是协议的版本号和应答状态码
    (5)Web服务器发送应答头信息 正如客户端会随同请求发送关于自身的信息一样,服务器也会随同应答向用户发送关于它自己的数据及被请求的文档。
    (6)Web服务器向浏览器发送数据 Web服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据
    (7)Web服务器关闭TCP连接 一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码

    HTTP是一种无状态协议。 Connection:keep-alive TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。
    复制代码
    2.HTTP请求格式
     
    2.1  当浏览器向Web服务器发出请求时,它向服务器传递了一个数据块,也就是请求信息,HTTP请求信息由3部分组成:
    l   请求方法URI协议/版本
    l   请求头(Request Header)
    l   请求正文
     
    (1)请求方法URI协议/版本
    请求的第一行是“方法URL议/版本”:http://localhost:63342/webpack/index.html HTTP/1.1
    根据HTTP标准,HTTP请求可以使用多种请求方法。例如:HTTP1.1支持7种请求方法:GET、POST、HEAD、OPTIONS、PUT、DELETE和TARCE。在Internet应用中,最常用的方法是GET和POST。
    URL完整地指定了要访问的网络资源,通常只要给出相对于服务器的根目录的相对目录即可,因此总是以“/”开头,最后,协议版本声明了通信过程中使用HTTP的版本,“HTTP/1.1代表协议和协议的版本。
     
    (2)请求头(Request Header)
    请求头包含许多有关的客户端环境和请求正文的有用信息。例如,请求头可以声明浏览器所用的语言,请求正文的长度等。
     
     
    (3)请求正文
    请求头和请求正文之间是一个空行,这个行非常重要,它表示请求头已经结束,接下来的是请求正文。请求正文中可以包含客户提交的查询字符串信息:

    插个知识点,简单讲一下get请求和post请求的区别:

    1.使用Get请求时,参数在URL中显示,而使用Post方式,则不会显示出来
    2.使用Get请求长度有限制,发送数据量小;Post请求长度无限制,发送数据量大;
    3.从性能角度上,发送相同的数据,GET请求的速度最多可达到POST的两倍。
    4.使用Get请求能够被缓存,POST请获得的网络数据不能被缓存。
     2.2  HTTP应答与HTTP请求相似,HTTP响应也由3个部分构成,分别是:
    l 协议状态版本代码描述
    l 响应头(Response Header)
    l 响应正文
     
    (1)协议状态版本代码描述
      协议状态代码它表示通信所用的协议是HTTP1.1服务器已经成功的处理了客户端发出的请求(200表示成功):

    (2)响应头(Response Header)

    响应头(Response Header)响应头也和请求头一样包含许多有用的信息,例如服务器类型、日期时间、内容类型和长度等:

    (3)响应正文

    响应正文就是服务器返回的HTML页面:

    插个知识点,列出一些常用的状态码含义:

    复制代码
    1XX-信息类(Information),表示收到Web浏览器请求,正在进一步的处理中
    2XX-成功类(Successful),表示用户请求被正确接收,理解和处理例如:
    200 请求已成功,请求所希望的响应头或数据体将随此响应返回。

    3XX-重定向类(Redirection),表示请求没有成功,客户必须采取进一步的动作。
    303 对应当前请求的响应可以在另一个 URI 上被找到,而且客户端应当采用 GET 的方式访问那个资源。这个方法的存在主要是为了允许由脚本激活的POST请求输出重定向到一个新的资源。
    304 如果客户端发送了一个带条件的 GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个状态码。
      客户端收到304响应后,就会从缓存中读取对应的资源.

    4XX-客户端错误(Client Error),表示客户端提交的请求有错误 例如:404 NOT Found,意味着请求中所引用的文档不存在。
    400 1、语义有误,当前请求无法被服务器理解。除非进行修改,否则客户端不应该重复提交这个请求。   2、请求参数有误。
    403 服务器已经理解请求,但是拒绝执行它。
    404 请求失败,请求所希望得到的资源未被在服务器上发现。
    5XX-服务器错误(Server Error)表示服务器不能完成对请求的处理:
    500 服务器内部错误,一般来说,这个问题都会在服务器的程序码出错时出现。
    复制代码

    3、URI和URL

    URI用字符串标示某一互联网资源,而URL表示资源的地点。可见URL是URI的子集。

    URI要使用涵盖全部必要信息的URI、绝对URL以及相对URL。相对URL是指从浏览器中基本URI处理的URL,来先看下URI的格式

  • 相关阅读:
    儿童文学经典
    育儿经
    彭博新闻社网站10月1日报道称,人民币1日获得了全球储备货币的地位。据认为,这个具有里程碑意义的事件将为中国债券市场注入活力,因为据预计,这会促使多达1万亿美元的资金在未来五年里流入该国债市。
    山西宗教文化漫谈(三)一五台山:四大佛山之首
    山西宗教文化漫谈(一)
    山西宗教文化漫谈(四)——云冈:东方艺术宝库
    山西宗教文化漫谈(六)--西山大佛
    nginx配置入门
    .zip/.rar打包与解压
    centos一键安装lnmp成功后无法访问ip(解决办法)
  • 原文地址:https://www.cnblogs.com/123poi/p/13255402.html
Copyright © 2011-2022 走看看