• HTTP协议


    HTTP协议

    1、什么是HTTP协议?

      HTTP协议是一种超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。

      专门用来进行超文本信息传输的  规定和规范,可以使得超文本传递更为快捷高效。

    2、作用和特点

      HTTP协议是学习JavaWEB开发的基石,不了解HTTP协议,就不能说掌握了WEB开发,更无法管理和维护一些复杂的WEB站点。

      特点:

      HTTP是一种无状态协议,即服务器不保留与客户交流时的任何状态。这就大大减轻了服务器记忆负担,从而保持较快的响应速度。HTTP是一种面向对象的协议。允许传送任意类型的数据对象。它通过数据类型和长度来标识所传送的数据内容和大小,并允许对数据进行压缩传送。

      HTTP是一个简单的请求-响应协议,它通常运行在TCP之上。基于请求响应模型,请求和响应必须成对存在,先有请求后有响应。默认端口为80端口。

    3、工作原理 

      HTTP是基于客户/服务器模式,且面向连接的。典型的HTTP事务处理有如下的过程: [8] 
      (1)客户与服务器建立连接;
      (2)客户向服务器提出请求;
      (3)服务器接受请求,并根据请求返回相应的文件作为应答;
      (4)客户与服务器关闭连接。
    4、HTTP1.0和1.1的区别
      1.0不支持常连接,每一次请求都需要进行一次连接(三次握手)。
      1.1支持常连接,只需要一次连接(三次握手)就可以不断的传输数据。

    HTTP请求详解

    1、请求行:

      Get请求方式:

      Post请求方式

        

      

      Get请求和post请求的区别?

         

      1、get方式传参会将表单中的信息使用URL拼接的方式显示到浏览器的地址栏中,不安全

        post传参不会暴露信息  

      2、get方式属于URL参数传递信息会以?的形式进行拼接,多个参数使用&形式拼接

        post会将信息放在请求主体中,这样的信息是不会暴露的。

      3、get传参数有长度限制,超过限制后直接报错。

        post传参长度不受限制。

      4、get方式传递参数浏览器会直接缓存数据,无论多重要的信息浏览都会缓存

        Post方式浏览器不会直接缓存到重要信息,比较安全。 

      5、GET唯一的好处就是比post快。

    2、请求头 

      请求头通常以键值对(key:value)方式传递数据。

      key为规范规定的固定值

      value 为key对应的取值,通常是一个值,可能是一组

    常见请求头

    描述(了解)

    Referer

    浏览器通知服务器,当前请求来自何处。如果是直接访问,则不会有这个头。常用于:防盗链

    请求的来源。

     

    Cookie

    与会话有关技术,用于存放浏览器缓存的cookie信息。(后面课程主讲)

     

    User-Agent

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

    用户-代理

     

    Connection

    保持连接状态。Keep-Alive 连接中,close 已关闭

    Host

    请求的服务器主机名

    Content-Length

    请求体的长度

    Content-Type

    如果是POST请求,会有这个头,默认值为application/x-www-form-urlencoded,表示请求体内容使用url编码

    Accept:

    浏览器可支持的MIME类型。

    MIME类型:互联网上为了具体传递文件类型的一种方式。

    扩展名类型:硬盘上为了保存数据的一种文件类型方式,例如:*.html,*.jpg

     

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

    例如:

       text/html ,*.html,html格式的文本

       text/css,*.css, css格式的文本

       image/JPEG,*.jpg , JPEG格式的图片

    Accept-Encoding

    浏览器通知服务器,浏览器支持的数据压缩格式。如:GZIP压缩

    Accept-Language

    浏览器通知服务器,浏览器支持的语言。各国语言(国际化i18n)

    If-Modified-Since

    浏览器通知服务器,本地缓存的最后变更时间。与另一个响应头组合控制浏览器页面的缓存。(目前使用频率不高)

    3、请求体

      用于传递表单数据,数据量没有限制,通常情况下只有post请求方式才会用到请求体

    HTTP响应详解

    1、响应行  用于返回响应结果

      状态码:

        100-199:请求已经到达服务器,但是没有完成,需要再次请求才能完成。
        200-299:请求已到达服务器,并且处理完成。(200)
        300-399:资源重定向。服务器中发生资料重定向。(302重定向)(304访问的是浏览器缓存)ctrl+shift+delete清除
        400-499:资源找不到 (404)
        500-599:服务器同部异常。(500)

    2、响应头

      用于存放定义好的key/value少量信息

    常见响应头

    描述(了解)

    Location

    重定向的路径

    指定响应的路径,需要与状态码302配合使用,完成跳转。(后面课程主讲)

    Content-Type

    响应正文的类型(MIME类型)

    取值:text/html;charset=UTF-8

    Content-Disposition

    正文-配置。   在文件下载时才会使用

    通过浏览器以下载方式解析正文(后面课程主讲)

    取值:attachment;filename=xx.zip

    Set-Cookie

    与会话相关技术。服务器向浏览器写入cookie(后面课程主讲)

    服务器和浏览器之间传递的一张小纸条

    Content-Encoding

    服务器使用的压缩格式

    取值:gzip

    Content-length

    响应正文的长度

    Server

    指的是服务器名称,默认值:Apache-Coyote/1.1。可以通过conf/server.xml

    Last-Modified

    服务器通知浏览器,文件的最后修改时间。与If-Modified-Since一起使用。(目前不用)

    3、响应体

      传递的是请求需要查看的资源数据,数据量无限

      若浏览器想看html网页,响应体里就是html页面代码

      若浏览器想看jpeg图片,响应体里就是JPEG图片的二进制字节流数据

      若浏览器想看AVI视频,响应体里就是AVI视频的二进制字节流数据

  • 相关阅读:
    分分钟提升命令行模式下密码输入逼格
    MySQL server has gone away 的两个最常见的可能性
    第一次遇到刷新缓冲区延时
    Mac上安装mysqlclient的报错
    python3 --- locale命名空间让程序更加安全了
    doctest --- 一个改善python代码质量的工具
    MySQL优化器 --- index_merge
    机智的MySQL优化器 --- is null
    Centos-7.x 下子网掩码的配置
    JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(三):两个Viewmodel搞定增删改查
  • 原文地址:https://www.cnblogs.com/xfdhh/p/11404026.html
Copyright © 2020-2023  润新知