zoukankan      html  css  js  c++  java
  • HTTP协议

    一、HTTP简介

      (1)Web浏览器与Web服务器之间通信必须遵循一定的标准规则,这个规则就是HTTP协议。

      (2)HTTP是HyperText Transfer Protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程及数据本身的格式。

      (3)HTTp协议的版本:

        HTTP/1.0、HTTP/1.1

    二、HTTP1.0的基本运行方式

      (1)基于HTTP协议的客户/服务器模式的信息交换过程,如图所示,它分四个过程,建立连接、发送请求信息、发送响应信息、关闭连接。

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

      (3)浏览器到WEB服务器之间的所有通讯都是完全独立分开的请求和响应。

    三、HTTP1.1与HTTP1.0的比较

             HTTP1.1的特点:

                       (1)在一个TCP连接上可以传送多个HTTP请求和响应。

                       (2)多个请求和响应过程可以重叠

                       (3)增加了更多的请求头和响应头,比如Host、If-Unmodified-Since请求头等

    四、HTTP请求消息

             一个完整的HTTP请求包括如下内容:

                       一个请求行、若干消息头、以及请求正文,其中的若干消息头和正文都是可选的,消息头和正文内容之间要用空行隔开。

    五、HTTP响应消息

             一个完整的HTTP响应包括如下内容:

                       一个状态行、若干消息头、以及响应正文,其中的若干消息头和正文都是可选的,消息头河正文内容之间用空行隔开。

    六、HTTP消息头

             (1)使用消息头,可以实现HTTP客户机与服务器之间的条件请求和应答,消息头相当于服务器和浏览器之间的一些暗号指令。

             (2)每个消息头包含一个头字段名称,然后依次是冒号、空格、值、回车和换行符。如: Accept-Encoding: gzip, deflate

             (3)消息头字段名是不区分大小写的,但习惯上讲每个单词的第一个字母大写。

             (4)整个消息头部分中的各行消息头可按任何顺序排列。

             (5)消息头又可分为通用信息头、请求头、响应头、实体头等四类。

             (6)许多请求头字段都允许客户端在值部分指定多个可接受的选项,多个选项之间以逗号分隔。

             (7)有些头字段可以出现多次,例如,响应消息中可以包含有多个”Warning”头字段。

    七、HTTP请求的细节

             (一)请求行

                       (1)格式:请求方式 资源路径 HTTP版本号<CRLF>

                       (2)举例:GET /temp3o116.shtml HTTP/1.1

                       (3)请求方式:GET、POST、HEAD、OPTIONS、DELETE、TRACE、PUT

                       (4)用户如没有设置,默认情况下浏览器向服务器发送的都是get请求,例如在浏览器直接输地址访问,点超链接访问等都是get,用户如想把请求方式改为post,可通过更改表单的提交方式实现。

                       (5)不管POST或GET,都用于向服务器请求某个WEB资源,这两种方式的区别主要表现在数据传递上。

             (二)请求头

                       请求头字段用于客户端在请求消息中向服务器传递附加信息,主要包括客户端可以接受的数据类型、压缩方法、语言以及发出请求的超链接所属页面的URL地址等信息。

                       常用请求头:

                                (1)Accept:浏览器可接受的MIME类型

              (2)Accept-Charset: 浏览器通过这个头告诉服务器,它支持哪种字符集

              (3)Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip

              (4)Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。 可以在浏览器中进行设置。

              (5)Host:初始URL中的主机和端口

              (6)Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面

              (7)Content-tType:内容类型

              (8)If-Modified-Since: Wed, 02 Feb 2011 12:04:56 GMT利用这个头与服务器的文件进行比对,如果一致,则从缓存中直接读取文件。

              (9)User-Agent:浏览器类型.

              (10)Content-Length:表示请求消息正文的长度

              (11)Connection:表示是否需要持久连接。如果服务器看到这里的值为“Keep -Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接

              (12)Cookie:这是最重要的请求头信息之一

              (13)Date:Date: Mon, 22 Aug 2011 01:55:39 GMT请求时间GMT

    八、HTTP响应的细节

             (一)状态行

                       格式:HTTP版本号 状态码 原因叙述<CRLF>

                       举例:HTTP/1.1 200 OK

             (二)常用状态码

                       (1)200(正常):表示一切正常,返回的是正常请求结果

                       (2)302/307(临时重定向):指出被请求的文档已被临时移动到别处,此文档的新的URL在Location响应头中给出。

                       (3)304(未修改):表示客户机缓存的版本是最新的,客户机可以继续使用它,无需到服务器请求。

                       (4)404(找不到):服务器上不存在客户机所请求的资源。

                       (5)500(服务器内部错误):服务器端的程序发生错误。

             (三)常用响应头

                       (1)Location: http://www.it315.org/index.jsp指示新的资源的位置

          (2)Server:apache tomcat指示服务器的类型

          (3)Content-Encoding: gzip服务器发送的数据采用的编码类型

          (4)Content-Length: 80 告诉浏览器正文的长度

          (5)Content-Language: zh-cn服务发送的文本的语言

          (6)Content-Type: text/html; charset=GB2312服务器发送的内容的MIME类型

          (7)Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT文件的最后修改时间

          (8)Refresh: 1;url=http://www.it315.org指示客户端刷新频率。单位是秒

          (9)Content-Disposition: attachment; filename=aaa.zip指示客户端下载文件

          (10)Set-Cookie:SS=Q0=5Lb_nQ; path=/search服务器端发送的Cookie

          (11)Expires: -1

          (12)Cache-Control: no-cache (1.1) 

          (13)Pragma: no-cache   (1.0)

          (14)Connection: close/Keep-Alive  

          (15)Date: Tue, 11 Jul 2000 18:23:51 GMT

    三种禁止浏览器缓存的头字段:

             Expires、Cache-Control、Pragma

  • 相关阅读:
    在线捉鬼游戏开发之二
    在线捉鬼游戏开发之二
    在线捉鬼游戏开发之一
    Oxygen-Dapr.EshopSample 部署随记
    word2010 标题自动编号设置
    饿了么element 全屏加载中
    vue笔记
    那些骂鸿蒙的人,我想说……
    为什么我们要在 Sketch 中备份所有 Figma 设计
    好的设计要多分享,5款优秀在线原型设计案例
  • 原文地址:https://www.cnblogs.com/FlySheep/p/3400002.html
Copyright © 2011-2022 走看看