• 计算机网络(12)-----HTTP协议详解


    HTTP协议详解

    http请求

      http请求由三部分组成,分别是:请求行消息报头请求正文

      (1)请求行

        请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本,格式如下:Method Request-URI HTTP-Version,例如(GET /index.html HTTP/1.1)

        请求方法主要有GETPOST两种

        GET:在浏览器的地址栏中输入网址的方式访问网页时,浏览器采用GET方法向服务器获取资源。

        POST:要求被请求服务器接受附在请求后面的数据,常用于提交表单。

      2)请求头(Request Header)

        请求头包含许多有关的客户端环境和请求正文的有用信息。例如,请求头可以声明浏览器所用的语言,请求正文的长度等。

        Host: localhost:8089
        Connection: keep-alive  //长连接
        Upgrade-Insecure-Requests: 1
        User-Agent: Mozilla/5.0 (Windows NT 10.0; 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
        Accept-Encoding: gzip, deflate, sdch  //编码
        Accept-Language: zh-CN,zh;q=0.8  //语言

      (3)请求正文

        请求头和请求正文之间是一个空行,这个行非常重要,它表示请求头已经结束,接下来的是请求正文。

        Accept:image/gif.image/jpeg,*/*

        Accept-Language:zh-cn

        Connection:Keep-Alive

        Host:localhost

        User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)

        Accept-Encoding:gzip,deflate

         //一个空行

        username=jinqiao&password=1234

        HTTP请求方法我这里只讨论GET方法与POST方法

        GET方法

        GET方法提交的表单数据只经过了简单的编码,同时它将作为URL的一部分向Web服务器发送,因此,如果使用GET方法来提交表单数据就存在着安全隐患上。例如

        Http://127.0.0.1/login.jsp?Name=zhangshi&Age=30&Submit=%cc%E+%BD%BB

        从上面的URL请求中,很容易就可以辩认出表单提交的内容。(?之后的内容)另外由于GET方法提交的数据是作为URL请求的一部分所以提交的数据量不能太大

        POST方法

        POST方法是GET方法的一个替代方法,它主要是向Web服务器提交表单数据,尤其是大批量的数据。POST方法克服了GET方法的一些缺点。通过POST方法提交表单数据时,数据不是作为URL请求的一部分而是作为标准数据传送给Web服务器,这就克服了GET方法中的信息无法保密和数据量太小的缺点。因此,出于安全的考虑以及对用户隐私的尊重,通常表单提交时采用POST方法。

        从编程的角度来讲,如果用户通过GET方法提交数据,则数据存放在QUERY_STRING环境变量中,而POST方法提交的数据则可以从标准输入流中获取。

    http响应

      HTTP应答与HTTP请求相似,HTTP响应也由3个部分构成,状态行,响应头(Response Header),响应正文

      状态行

        状态行由协议版本、数字形式的状态代码、及相应的状态描述,各元素之间以空格分隔。格式:    HTTP-Version Status-Code Reason-Phrase 例如:    HTTP/1.1 200 OK

        状态代码

          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   服务器当前不能够处理客户端的请求,在一段时间之后,服务器可能会恢复正常。

      响应头(Response Header)

        Content-Length:

          Content-Length实体报头域用于指明正文的长度,以字节方式存储的十进制数字来表示,也就是一个数字字符占一个字节,用其对应的ASCII码存储传输。

        Content-Type:

          Content-Type实体报头域用语指明发送给接收者的实体正文的媒体类型。例如:Content-Type: text/html;charset=ISO-8859-1,Content-Type: text/html;charset=GB2312

        Server:

          Server响应报头域包含了服务器用来处理请求的软件信息。

        Date:

          响应时间。

      响应正文

        服务器返回的资源的内容 

  • 相关阅读:
    提交上了,却在iTunes Connect没有新版本的任何消息
    真机调试 —— An unknown error occurred.
    UI第二节——UIButton详解
    UI第一节—— UILable
    OC第九节——协议与代理
    补10月26日
    我看互联网第一约战
    接受自己的不完美---写在毕业之后的总结
    写给自己的学习之道
    越过山丘
  • 原文地址:https://www.cnblogs.com/a294098789/p/5664763.html
Copyright © 2020-2023  润新知