zoukankan      html  css  js  c++  java
  • 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”);

  • 相关阅读:
    21.Merge Two Sorted Lists 、23. Merge k Sorted Lists
    34. Find First and Last Position of Element in Sorted Array
    leetcode 20. Valid Parentheses 、32. Longest Valid Parentheses 、301. Remove Invalid Parentheses
    31. Next Permutation
    17. Letter Combinations of a Phone Number
    android 常见分辨率(mdpi、hdpi 、xhdpi、xxhdpi )及屏幕适配注意事项
    oc 异常处理
    oc 类型判断
    oc Delegate
    oc 协议
  • 原文地址:https://www.cnblogs.com/haifeiWu/p/9079575.html
Copyright © 2011-2022 走看看