• JavaWeb 之 HTTP 协议


    一、HTTP 协议简介

      1、概念

        HTTP:Hyper  Text Transfer Protocol 超文本传输协议。

           是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。它是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。

        传输协议:定义了客户端和服务器端通信时,发送数据的格式。

        报文:客户端与服务端通信时传输的内容我们称之为报文。

        HTTP就是一个通信规则,这个规则规定了客户端发送给服务器的报文格式,也规定了服务器发送给客户端的报文格式。客户端发送给服务器的称为”请求报文“,服务器发送给客户端的称为”响应报文

      2、特点

        (1)基于 TCP/IP 的高级协议

        (2)默认端口号:80

        (3)基于请求/响应模型的:一次请求对应一次响应

        (4)无状态的:每次请求之间相互独立,不能交互数据

    二、HTTP 协议的会话方式

      浏览器与服务器之间的通信过程要经历四个步骤

      

    1、浏览器与WEB服务器的连接过程是短暂的,每次连接只处理一个请求和响应。对每一个页面的访问,浏览器与WEB服务器都要建立一次单独的连接

    2、浏览器到WEB服务器之间的所有通讯都是完全独立分开的请求和响应对  

    三、HTTP1.0 和 HTTP1.1的区别

      HTTP1.0(短连接):浏览器请求一个带有图片的网页,会由于下载图片而与服务器之间开启一个新的连接(每次请求响应都会建立新的连接)

      HTTP1.1(长连接):允许浏览器在拿到当前请求对应的全部资源后再断开连接,提高了效率(请求的连接可以复用)

      

    四、报文

      1、报文格式

        客户端与服务端通信时传输的内容称之为报文,报文有着它自己的格式。

        

      2、请求的HTTP协议格式

          HTTP 协议中有七种请求方式,常用的有两种 GET 和 POST。

        (1)请求报文格式

    请求首行(请求行);

    请求头信息(请求头);

    空行;

    请求体;

        (2)GET 请求

    1、请求行:

      ① 请求的方式                                 GET

      ② 请求的资源路径[+?+请求参数]   

      ③ 请求的协议的版本号                   HTTP/1.1

    2、请求头

      key :value 组成                            不同的键值对,表示不同的含义

        

           注意:GET 请求没有请求体,请求体在 url 地址栏中。

        (3)POST 请求

    1、请求行

      ① 请求的方式                            POST

      ② 请求的资源路径                     

      ③ 请求的协议的版本号              HTTP/1.1

    2、请求头

      key :value                                不同的请求头,代表不同的含义

    空行                                                   用来分割请求头和请求体

    3、请求体                                          发送给服务器的数据(封装请求参数)

        

        (4)常用请求头的说明

    Accept:表示客户端可以接收的数据/文档类型,*/*表示什么都可以接收;
    Referer:表示请求发起时,浏览器地址栏中的地址从哪里来(例从百度上点击链接到了这里,那么Referer:http://www.baidu.com;如果你是在浏览器的地址栏中直接输入的地址,那么就没有Referer这个请求头了)主要用于① 防盗链;② 统计工作
    User-Agent:表示浏览器的信息(可以在服务器端获取该头的信息,解决浏览器的兼容性问题)
    Accept-Language:告诉服务器客户端可以接收的语言类型,zh-CN:支持中文;en-US支持英文
    Accept—Encoding:告诉服务器可以接收的数据编码(压缩)格式,gzip,defalte:支持的压缩格式,数据在网络传递时,可以服务器会把数据压缩再发送
    Host:表示请求的服务器ip和端口号;
    Content-Length:表示请求体数据的长度
    connection:告诉服务器请求连接如何处理,keep-Alive:表示回传数据后不要马上关闭,保持一小段时间的连接(默认3000ms);Closed:马上关闭
    Cache-Control:表示如何控制缓存 no-cache 表示不缓存
    Content-Type:表示发送的数据的类型
            ① application/x-www-form-urlencoded:表示提交的数据格式是 name=value&name1=value2,然后对其 URL 编码(URL编码是把非英文内容转换为%xx%xx)
            ② multipart/form-data:表示以多端的形式提交给服务器(以流的形式提交,用于上传文件)
    Cookie: JSESSIONID=369766FDF6220F7803433C0B2DE36D98:因为不是第一次访问这个地址,所以会在请求中把上一次服务器响应中发送过来的Cookie在请求中一并发送过去

        (5)哪些是 GET 请求,哪些是 POST 请求

            GET请求:

            •  form 标签中 method=get(不写,默认也是get)
            •  a 标签的跳转
            •  link 标签引入 CSS 文件
            •  script 标签引入 JS 文件
            •  img 标签引入 图片
            •  iframe 引入 HTML 页面
            •  在浏览器地址栏中输入地址然后敲回车

            POST请求:

            •  form 标签中 method=post

      3、响应的HTTP协议格式

        (1)响应报文格式

    1、响应首行(响应行)

      ① 响应的协议和版本号;

      ② 响应的状态码;

      ③ 响应的状态描述符;

    2、响应头信息(响应头)

      key :value                    不同的响应头,代表不同的含义

    空行                                       用来分割响应头和响应体。

    3、响应体                              回传给客户端的数据

        (2)响应报文

                         

        (3)常见的响应头说明

     Content-Type:服务器告诉客户端本次响应体数据格式以及编码格式;

     Content-disposition:服务器告诉客户端以什么格式打开响应体数据;

              ① in-line:默认值,在当前页面内打开;

              ② attachment;filename=xxx;以附件形式打开响应体。(一般应用于文件下载)

        (4)常用的响应码说明

           响应码对浏览器很重要,它告诉浏览器响应的结果,状态码都是3位数字

    1xx:服务器收客户端信息,但是没有接受完成,等待一段时间后,发送1xx状态码

    2xx:成功。如:200请求成功,浏览器会把响应体内容(通常是html)显示在浏览器中;

    3xx:重定向。如:302:重定向,当响应码为302时,表示服务器要求浏览器重新再发一个请求,服务器会发送一个响应头Location,它指定了新请求的URL地址;304:代表访问本地缓存

    4xx:客户端错误。如:404:表示请求服务器已经收到了,请求的资源可能没有找到(说明客户端错误的请求了不存在的资源)或者请求地址写错了;405:请求方式没有对应的doxxx方法;

    5xx:服务器错误。如:500:表示服务器已经收到请求了,但服务器内部出现了错误(代码出现错误)

    五、MIME 类型说明

      MIME 是 HTTP 协议中数据类型。

      MIME 的英文全称是"Multipurpose Internet Mail Extensions" 多功能 Internet 邮件扩充服务。 MIME 类型的格式是“大类型/
    类型” , 并与某一种文件的扩展名相对应。

      常见的 MIME 类型:

    文件 MIME 类型
    超文本标记语言文本 .html , .htm text/html
    普通文本 .txt text/plain
    RTF 文本 .rtf application/rtf
    GIF 图形 .gif image/gif
    JPEG 图形 .jpeg,.jpg image/jpeg
    au 声音文件 .au audio/basic  
    MIDI 音乐文件 mid,.midi audio/midi,audio/x-midi
    RealAudio 音乐文件 .ra, .ram audio/x-pn-realaudio
    MPEG 文件 .mpg,.mpeg video/mpeg
    AVI 文件 .avi video/x-msvideo
    GZIP 文件 .gz application/x-gzip
    TAR 文件 .tar application/x-tar
  • 相关阅读:
    PHP之防御sql注入攻击的方式
    分享Java开发的利器-Lombok
    Linux最佳的云存储服务分析
    提升PHP编程效率的20个要素
    Java中常见的URL问题及解决方案
    配置CNPM-基础案例
    微软Skype Linux客户端全新发布
    jQuery 3.0最终版发布,十大新特性眼前一亮
    【风马一族_mysql】MySQL免安装版环境配置图文教程
    【风马一族_物理】维度空间的粒子
  • 原文地址:https://www.cnblogs.com/niujifei/p/11618762.html
Copyright © 2020-2023  润新知