• HTTP协议学习笔记


    URL详解

    • http是一个基于请求与相应模式的,无状态的,应用层的协议,常基于TCP链接,HTTP1.1版本中给出一种持续连接的机制,绝大多数的Web开发,都是构建在HTTP协议之上的Web应用。

    • HTTP URL (URL是一种特殊类型的URI,包含了用于查找某个资源的足够的信息)的格式如下:http://host[“:”port][path]
      其中,http表示要通过HTTP协议来定位网络资源;host表示合法的Internet主机域名或者IP地址;port指定一个端口号,若空则使用缺省的80端口;path指定请求资源的URI;如果URL中没有给出path,那么当它作为请求URI时,必须以“/”的形式给出,但通常浏览器会帮我们完成这个工作。比如在浏览器地址栏 输入: www.guet.edu.cn, 浏览器自动换成http://www.guet.edu.cn/


    HTTP请求

    • HTTP请求分为三部分,分别是请求行,消息报头,请求正文。

    • 请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本,格式如下:
      Method Request-URI HTTP-Version CRLF
      其中, Method表示请求方法,一般为GET, POST, PUT, DELET;Request-URI是一个统一资源标识符, 例如/index.jsp;HTTP-Version表示请求的HTTP协议版本, 比如HTTP/1.1;CRLF表示回车和换行符(除了作为结尾的CRLF外,不允许出现单独的CR或LF字符)。请求方法除了上述提到的GET, POST, PUT, DELETE外,还有TRACE, CONNECT,OPTIONS,其各个方法的解释如下:

    请求方式 含义
    GET 请求获取Request-URI所标识的资源
    POST 在Request-URI所标识的资源后附加新的数据
    HEAD 请求获取由Request-URI所标识的资源的响应消息报头
    PUT 请求服务器存储的一个资源,并用Request-URI作为标示
    DELETE 请求服务器删除Request——URI所标示的资源
    TRACE 请求服务器回送收到的请求信息,主要用于测试或者诊断
    CONNECT 保留将来使用
    OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求

    HTTP响应

    一般情况下,服务器接收并处理客户端发过来的请求后会返回一个HTTP的响应消息。

    • HTTP的响应消息也是由三个部分组成,分别是:状态行、消息报头、响应正文。

    • 状态行格式如下:HTTP-Version Status-Code Reason-Phrase (CRLF)
      其中,HTTP-Version表示服务器HTTP协议的版本, 例如HTTP/1.1;Status-Code表示服务器发回的响应状态代码, 例如200;Reason-Phrase表示状态代码的文本描述,例如OK。

    • HTTP状态码
      状态代码有三位数字组成,第一个数字定义了响应的类别,共分五种类别:
    状态码 状态码含义
    1XX 指示信息–表示请求已接收,继续处理
    2XX 成功–表示请求已被成功接收、理解、接受
    3XX 重定向–要完成请求必须进行更进一步的操作
    4XX 客户端错误–请求有语法错误或请求无法实现
    5XX 服务器端错误–服务器未能实现合法的请求

    HTTP消息报头

    不管是请求消息还是响应消息,都由开始行(对于请求消息,开始行就是请求行,对于响应消息,开始行就是状态行),消息报头,空行(只有CRLF的行),消息正文组成。HTTP消息报头包括普通报头、请求报头、响应报头、实体报头。每一个报头域都是由名字+”:”+值 组成,消息报头域的名字是大小写无关的,域值前可以有任意个空格(但通常会在前面添加一个空格),可以允许多个相同的消息包头。


    • 普通报头
      普通报头中包含请求消息和响应消息都支持的头域,有Cache-Control、Connection、Date、Pragma、Transfer-Encoding、Upgrade、Via。
      Cache-Control: 用于指定缓存指令。缓存指令是单向的(响应中出现的缓存指令在请求中未必会出现),且是独立的(一个消息的缓存指令不会影响另一个消息处理的缓存机制)。

    Cache-Control的各种取值的含义

    Cache-Control的取值 含义
    public 指示响应可被任何缓存区缓存。
    Private 指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。
    no-cache 指示请求或响应消息不能缓存
    no-store 用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。
    max-age 指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。
    min-fresh 指示客户机可以接收响应时间小于当前时间加上指定时间的响应。
    max-stale 指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。

    • 响应报头
      响应报头允许服务器传递的附加响应信息,以及关于服务器的状态信息以及对Request-URI所标识的资源进行下一步访问的信息。

    常用的响应报头的信息

    响应报头 具体含义
    Location 用于提示客户端重定向到一个新的位置。Location响应报头域常用在更换域名的时候。
    Server 包含了服务器用来处理请求的软件信息。比如Server: Play! Framework; 1.2.3。1.2.3搭建的应用服务程序,该程序处于生产模式。
    Connection
    Proxy-Connection
    Set-Cookie cookie信息

    • 实体报头
      请求和响应消息都可以传送一个实体。一个实体由实体报头域和实体正文组成,但并不是说实体报头域和实体正文要在一起发送,可以只发送实体报头域。实体报头定义了关于实体正文(例如有无实体正文)和请求所标识的资源的元信息。

    常用的实体报头信息

    实体报头的信息 具体含义
    Content-Encoding 用于记录文档的压缩方法。比如 Content-Encoding:gzip
    Content-Language 描述了资源所用的自然语言。ru没有设置该域, 则认为实体内容将提供给所有的语言阅读
    Content-Length 用于指明实体正文的长度,单位字节, 十进制数表示
    Content-Type 指明发送给接收者的实体正文的媒体类型,比如Content-Type:text/html;charset=ISO-8859-1, 表示正文是一个html文档,采用ISO-8859-1编码
    Last-Modified 用于指示资源的最后修改日期和时间。
    Expires 给出响应过期的日期和时间。

    为了让代理服务器或浏览器在一段时间以后更新缓存中(再次访问曾访问过的页面时,直接从缓存中加载,缩短响应时间和降低服务器负载)的页面,我们可以使用Expires指定页面过期的时间。比如Expires:Thu,15 Sep 2006 16:23:12 GMT

    HTTP1.1的客户端和缓存必须将其他非法的日期格式(包括0)看作已经过期。例如,为了让浏览器不要缓存页面,我们可以将Expires设为0,jsp中程序如下:response.setDateHeader(“Expires”,”0”);

  • 相关阅读:
    检测客户端是否安装 Silverlight 插件和判断IE是否安装或支持Silverlight(限IE)
    Silverlight的组合键、快捷键(热键)调用方法
    实现自定义Silverlight版本检测和自定义升级Silverlight运行时方法
    风云的银光志Silverlight4.0系列教程汇总贴
    《银光志—Silverlight 3.0技术详解与最佳实践》创国内最畅销Silverlight技术书籍。
    模拟QQ网络棋牌游戏
    风云的银光志Silverlight4.0教程之轻松操作剪切板
    风云的银光志Silverlight4.0教程之富文本控件RichTextArea(RichTextBox)
    风云的银光志Silverlight4.0教程之使用鼠标右键事件和滚轮事件
    风云的银光志Silverlight4.0教程之WebBrowser(内置浏览器)控件
  • 原文地址:https://www.cnblogs.com/haifeiWu/p/9079575.html
Copyright © 2020-2023  润新知