HTTP协议

HTTP协议

  HTTP英文全称是Hypertext Transfer Protpcol,也就是超文本传输协议。就是定义客户端于服务器端进行通讯的格式。

  HTTP使用请求-响应的方式进行传输,一个请求只能对应一个响应,并且请求只能由客户端发起的。

  如图所示:

  HTTP请求     

   客户端连接服务器之后,想服务器请求某个web资源,称之为客户端向服务器发送一个http请求,一个完整的http请求内容包括:一个请求行、若干请求头、请求体。

      

  请求行:

    例如:POST /Demo01/user.html HTTP/1.1

    格式:请求方式 资源路径 协议/版本

    请求行必须在http请求格式的第一行。

     常见的请求:get请求,post请求

      get请求:

        将请求参数追加在url后面,不安全,url长度限制get请求方式数据的大小,没有请求体,一般的HTTP请求大多都是GET。

      post请求

        请求参数在请求体处,较安全。请求数据大小没有显示,只有表单设置为method=“post”才是post请求,其他都是get请求

      常见get请求:地址栏直接访问、<a href="">、<img src="">等

  请求头:

  例如:Host: 127.0.0.1:8080

  请求头从第二行开始,到第一个空格结束。请求头和请求体之间存在一个空格。

  常见请求头:

    Referer:表示这个请求是从哪个url跳过来的,通过百度来搜索淘宝网,那么在进入淘宝网的请求报文中,Referer的值就是:www.baidu.com。如果是直接访问就不会有这个头。常用于:防盗链。

    Accept:告诉服务端,该请求所能支持的响应数据类型,专业术语称为MIME 类型(文件类型的一种描述方式)

    MIME格式:大类型/小类型[;参数]

    例如:

         text/html ,html文件

    User-Agent:浏览器通知服务器,客户端浏览器与操作系统相关信息

    if-Modified-Sincce:浏览器通知服务器,本地缓存的最后变更时间。与另一个响应头组合控制浏览器页面的缓存

    Cokkie:客户端的Cookie就是通过这个报文头属性传给服务端的!

    Host:请求的服务器主机名

    Content-Type:请求的与实体对应的MIME信息。如果是post请求,会有这个头,默认值为application/x-www-form-urlencoded,表示请求体内容使用url编码

    Connection:表示客户端与服务连接类型;Keep-Alive表示持久连接,close已关闭

  请求体

    当请求方式是post的时,请求体会有请求的参数,格式如下:

    username=zhangsan&password=123

  HTTP响应

        HTTP的响应报文也由三部分组成(响应行+响应头+响应体)

        

    响应行:

      ①报文协议及版本;

      例如:

        HTTP/1.1 200 OK

      ②状态码及状态描述;

      常用的状态码如下:

        200 :请求成功。

        302 :请求重定向。

        304 :请求资源没有改变,访问本地缓存。

        404 :请求资源不存在。通常是用户路径编写错误,也可能是服务器资源已删除。

        500 :服务器内部错误。通常程序抛异常。

    响应头:

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

      响应头也是用键值对k:v

      服务器通过响应头来控制浏览器的行为,不同的头浏览器操作不同

    响应体:

      服务器发送给浏览器的正文,即我们真正要的“干货” ;

      响应体是服务器回写给客户端的页面正文,浏览器将正文加载到内存,然后解析渲染     显示页面内容

原文地址:https://www.cnblogs.com/zhai113/p/11813300.html