• HTTP 与HTTPS


    http请求报文

    http请求报文由方法、URI、http版本。http首部字段等构成

    下面给大家示例一个访问my_view_page.php的请求报文首部信息

    GET /my_view_page.php HTTP/1.1
    
    Host: 10.0.17.183:8000
    
    Connection: keep-alive
    
    Cache-Control: max-age=0
    
    Upgrade-Insecure-Requests: 1
    
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36
    
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    
    Referer: http://10.0.17.183:8000/my_view_page.php
    
    Accept-Encoding: gzip, deflate, sdch

    2、http响应报文

    http响应报文由http版本、状态码(数字和原因短语)、http首部字段3部分组成

    以下是刚才访问my_view_page.php时服务器返回的响应报文首部信息:

    HTTP/1.1 200 OK
    
    Cache-Control: no-store, no-cache, must-revalidate
    
    Date: Tue, 26 Jul 2016 09:32:11 GMT
    
    Expires: Tue, 26 Jul 2016 09:32:12 GMT
    
    Vary: Accept-Encoding
    
    Content-Encoding: gzip
    
    Content-Length: 3892
    
    Content-Type: text/html; charset=utf-8
    
    Last-Modified: Tue, 26 Jul 2016 09:32:12 GMT
    

    通用首部字段

    Cache-Control:
       no-cache:
          1)请求中如包含该命令,表示客户端不会接收缓存过的响应,必须向源放武器转发请求
          2)响应中包含该命令,那么缓存服务器不能对其资源进行缓存
          3)如果响应中no-cache=Location,那么客户端也不能缓存
       no-store:请求中包含机密信息,对方不能在本缓存请求或响应的任一部分
       max-age:
          1)缓存资源缓存时间数值低于该值,就接受缓存的资源,如max-age为0,则需要请求源服务器
          2)http1.1中,如遇到存在Expires首部字段的情况,会忽略Expires字段,优先处理max-age指令
         min-fresh:要求缓存服务器返回未过指定时间的资源
       no-transform:要求无论请求还是响应,都不能改变实体主体的媒体类型,防止缓存或者代理压缩图片等操作
    Connection:
      1)http1.1默认都是持久连接,客户端会在持久连接上持续发送请求,当服务器明确表示需要断开连接时,则指明首部字段值为close
      2)http1.1之前的版本默认都是非持久连接,需要在旧版本上保持持久连接,需要加入Keep-Alive
    Date:
      表明创建http报文的日期和时间 (Date: Sun, 31 Jul 2016 01:28:48 GMT)
    Transfer-Encoding:
      规定报文主体的编码方式,http1.1的传输编码方式仅对分块传输编码有效(Transfer-Encoding: chunked)

    请求首部字段

    Accept:通知服务器客户端可处理的媒体类型相对优先级,可使用type/subtype这种形式,q表示权重,默认值为1.0(Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8)

    Accept-Cherset:通知服务器客户端支持的字符集及字符集的相对优先级(Accept-Charset: iso-8859-5, unicode-1-1;q=0.8)

    Accept-Encoding:告知服务器用户代理支持的内容编码及内容编码优先级顺序(Accept-Encoding: gzip, deflate)

                                gizp:由文件压缩程序gzip(GUN zip)生成的编码格式

                                compress:由UNIX文件压缩程序compress生成的编码格式

                                deflate:组合使用zlib格式及由deflate压缩格式生成的编码格式

                                jdentity:不执行压缩或不会变化的默认编码格式

    Accept-Lanuage:告知服务器用户代理能够处理的自然语言集(告知服务器用户代理能够处理的自然语言集)

    Authorization:告知服务器用户代理的认证信息

    Host:告知服务器请求的资源所处的互联网主机名和端口号

    Referer:告知服务器请求的原始资源的URI

    User-Agent:   创建请求的浏览器和用户代理名称等信息传给服务器(User-Agent: Mozilla/5.0 (windows NT 6.1; WOW64; rv13.0) Gecko/=20100101 Firfox/13.0.1)

    响应首部字段:

    Accept-Ranges:告知客户端服务器能否处理范围请求,以指定获取服务器的某部分资源

           1)bytes:可处理范围请求

           2)none:不能处理范围请求

    Age:告知客户端源服务器创建响应多久了,单位S

    Location:基本上该字段都会配合3xx:Redirction的响应,提供重定向的URI

    Server:告知客户端当前服务器上安装的http服务器应用程序的信息。(Server: Apache/2.2.17(Unix))

    实体首部字段:

    Allow:通知客户端能够支持的Request-URI指定资源方法,如果服务器接收到不支持的方法,会返回状态码405(Allow:GET, HEAD)

    Content-Encoding:告知客户端服务器对实体的主体部分的选用的内容编码方式(Content-Encoding: gizp)

    Content-Lanuage:告知客户端实体主体使用的自然语言(Content-Lanuage: zh-CN)

    Expires:告知客户端资源失效的日期(Expires: Wed, 04 Jul 2016 09:26:05 GMT)

    HTTP状态码:

    - 1xx:   指示信息—表示请求已接收,继续处理。

    - 2xx:   成功—表示请求已经被成功接收、理解、接受。

    - 3xx:   重定向—要完成请求必须进行更进一步的操作。

    - 4xx:   客户端错误—请求有语法错误或请求无法实现。

    - 5xx: 服务器端错误—服务器未能实现合法的请求。

    几个特殊的状态码

      200     OK    客户端请求成功

      400     Bad Request   由于客户端请求有语法错误,不能被服务器所理解。

      401     Unauthonzed   请求未经授权。这个状态代码必须和WWW-Authenticate报头域一起使用

      403     Forbidden   服务器收到请求,但是拒绝提供服务。服务器通常会在响应正文中给出不提供服务的原因

      404     Not Found   请求的资源不存在,例如,输入了错误的URL。

      500     Internal Server Error 服务器发生不可预期的错误,导致无法完成客户端的请求。

      503     Service Unavailable   服务器当前不能够处理客户端的请求,在一段时间之后,服务器可能会恢复正常。

    keep-alive:
    每个http请求都要求打开一bai个tpc socket连接,并且使用一次du之后就断开这个tcp连接。使用keep-alive可以改善这种状态,即zhi在一次TCP连接中可以持续发送多份数据而不会断开连接。通过使用keep-alive机制,可以减少tcp连接建立次数

    https相当于身披SSL外壳的http

    https并非应用层的一种新协议,而是在http通信接口部分用SSL(Secure Socket Layer:安全套接字层)和TLS(Transport Layer Security:安全层传输协议)协议代替

    通常,http和TCP直接通信,当使用SSL时,先由http和SSL通信,再由SSL和TCP通信

     

  • 相关阅读:
    [转]轻松掌握Ajax.net系列教程一:部署AJAX.NET
    [转]轻松掌握Ajax.net系列教程六:使用PopupControlExtender
    javascript页面跳转常用代码
    [转]轻松掌握Ajax.net系列教程二:部署Ajax Control Toolkit
    [转]轻松掌握Ajax.net系列教程五:使用TextBoxWatermarkExtender
    [转]轻松掌握Ajax.net系列教程三:使用CascadingDropDown组件
    [转]轻松掌握Ajax.net系列教程四:用Ajax.net实现客户端回调(Callback)
    mydate97时间控件在IE中不显示问题
    java中导入导出Excel表格(jxl的API应用)
    创建模态窗口
  • 原文地址:https://www.cnblogs.com/paulwinflo/p/13530035.html
Copyright © 2020-2023  润新知