• http协议


    一、什么是http协议

      Hyper Text Transfer Protocol(超文本传输协议)简称HTTP协议,它是TCP/IP协议在应用层的一个协议,其主要有两个版本HTTP/1.0、HTTP/1.1。

      

    二、http协议的特点

      在HTTP1.0协议中,客户端与web服务器建立连接后,只能获得一个web资源。HTTP1.1协议,允许客户端与web服务器建立连接后,在一个连接上获取多个web资源

      无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

      无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

    三、http请求和响应

      http请求:

      客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求。一个完整的HTTP请求包括如下内容:

           一个请求行、若干消息头、以及实体内容,其中的一些消息头和实体内容都是可选的,消息头和实体内容之间要用空行隔开。如下所示:

       

      1、请求行

        请求方式有:POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT

              常用的有:POST、GET

        不管POST或GET,都用于向服务器请求某个WEB资源,这两种方式的区别主要表现在数据传递上,客户端通过这两种方式都可以带一些数据给服务器:

        1)如请求方式为GET方式,则可以在请求的URL地址后以?的形式带上交给服务器的数据,多个数据之间以&进行分隔,例如:

                       GET /mail/1.html?name=abc&password=xyz HTTP/1.1

                       GET方式的特点:在URL地址后附带的参数是有限制的,其数据容量不能超过1K。另一方面,一些用户密码等保密数据不适合以GET方式提交。

        2)如请求方式为POST方式,则可以在请求的实体内容中向服务器发送数据,例如:

               POST /servlet/ParamsServlet HTTP/1.1

               Host:

               Content-Type: application/x-www-form-urlencoded

               Content-Length: 28

         name=abc&password=xyz

               Post方式的特点:传送的数据量无限制。

      2、请求头

        

        

        常用请求头详解:

        Accept:用于告诉服务器,客户支持的数据类型。

        Accept-Charset:用于告诉服务器,客户采用的编码。

        Accept-Encoding:用于告诉服务器,客户支持的数据压缩格式。

        Host:客户机通过这个头告诉服务器,想访问的主机名。

        If-Modified-Since:用于告诉服务器,资源缓存的时间。

        Referer:用于告诉服务器,它是从哪个资源来访问服务器的(防盗链)。

        Content-Type:告知服务器,请求正文的MIME类型

                       默认类型:application/x-www-form-urlencoded(表单enctype属性的默认取值)

                                具体体现:username=abc&password=123

                       其他类型:multipart/form-data(文件上传时用的)

        User-Agent:用于告诉服务器,客户机使用的软件环境。

        Cookie:客户带过来的cookie信息。

        Connection:表示是否持续连接。如果想本次请求后关闭连接,使用close;如果想持续连接,使用keep-Alive。

        Date:发送请求时间。

      

      http响应:

        一个HTTP响应代表服务器向客户端回送的数据,它包括:

                一个状态行、若干消息头、以及实体内容 ,其中的一些消息头和实体内容都是可选的,消息头和实体内容之间要用空行隔开。

        

      1、状态行

        状态行

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

                  举例:HTTP/1.1 200 OK

          状态码用于表示服务器对请求的处理结果,它是一个三位的十进制数。响应状态码分为5类,如下所示:

         

        

        HTTP请求中的常用响应头:

          Location: http://www.it315.org/index.jsp

          Server:apache tomcat

          Content-Encoding: gzip

          Content-Length: 80

          Content-Language: zh-cn

          Content-Type: text/html; charset=GB2312

          Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT

          Refresh: 1;url=http://www.it315.org

          Content-Disposition: attachment; filename=aaa.zip

          Transfer-Encoding: chunked 

          Set-Cookie:SS=Q0=5Lb_nQ; path=/search

          Expires: -1

          Cache-Control: no-cache 

          Pragma: no-cache  

          Connection: close/Keep-Alive  

          Date: Tue, 11 Jul 2000 18:23:51 GMT

          常用响应头详解:

          Location:这个头配合302状态码使用,用于告诉客户找谁。

          Server:服务器通过这个头,告诉浏览器服务器的类型。

          Content-Encoding:服务器数据压缩格式。

          Content-Length:告诉浏览器回送数据的长度。

          Content-Type:告诉浏览器客户端,响应文正的MIME类型。默认text/html

          Last-Modified:告诉浏览器当前资源缓存的时间。

          Refresh:告诉浏览器多长时间刷新一次。

          Content-Disposition:告诉浏览器以下载方式打开数据。

          Expires: 告诉浏览器把回送的资源缓存多长时间。-1或0则表示不缓存。

          Cache-Control: 通过这个头也是告诉浏览器不要缓存数据。http1.1有效

          Pragma: 通过这个头也是告诉浏览器不要缓存数据。http1.0有效

      

        通用信息头指既能用于请求,又能用于响应的一些消息头。

          Cache-Control: no-cache 

          Pragma: no-cache   

          Connection: close/Keep-Alive   

          Date: Tue, 11 Jul 2000 18:23:51 GMT

  • 相关阅读:
    解决:Eclipse调试的时候报错'Launching XXX' has encountered a problem. Cannot connect to VM.
    struts-tiles学习笔记
    配置taglib的uri的2种方法
    根据二叉树中序序列画出二叉树
    不要把<a href="">当作按钮用
    由于没有正确使用Connection.setAutoCommit(false)而导致SQL语句没有被提交
    由于没有发现潜在的递归导致MySQL链接数溢出:MySQLNonTransientConnectionException: Data source rejected establishment of connection, message from server: "Too many connec
    解决:eclipse配置Database Connections报错Communications link failure Last packet sent to the server was 0 ms ago
    eclipse配置代码自动补全auto-completion
    oracle 创建表空间用户
  • 原文地址:https://www.cnblogs.com/kyleinjava/p/9008442.html
Copyright © 2020-2023  润新知