http了解

转载至:https://zhuanlan.zhihu.com/p/45173862

1. HTTP协议

  HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(www)服务器传输文本到本地浏览器的传送协议,可以认为是客户端和服务端进行数据传输的一种规范。它是基于TCP/IP通讯协议来传输数据的。

  HTTP是一种属于应用层面向对象的协议。

  特点:

  1.)支持客户/服务器模式。

  2.)简单快速:客户向服务器请求服务时,只需要传递请求方法(GET、POST等)和路径。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,是的HTTP服务器的规模很小,所以通讯速度很快。

  3.)无连接:无连接指服务器完成一次客户的请求后,就会断开当前连接,下次再进行数据处理时,重新建立连接。采用这种方式可以节省传输时间。后来可以通过Connection:Keep-Alive来实现长连接。

  4.)无状态:HTTP协议是无状态(协议对于事物的处理没有记忆的能力)协议。也就是当我们在处理数据的时候需要用到前面的信息的时候,它是无法获取到的,只能通过重新传送来获取这个数据,这样有时候会导致每次传输的数据特别大(或者比正常情况多)。但是在另一方面看,当他不需要前面的数据的时候,这个传输速度会很快。

  5.)灵活:HTTP允许接受任意类型的数据对象。正在传输的类型可以有Content-Type来进行标记

2.HTTP请求(request)

  具体参考下图: 

 

   请求行:

    Method:各种请求方法,即:GET、POST、PUT等。

    Request-URL:请求地址。

    Http-version:http版本。

  请求头部:

    由许多键值对组成,包含客户端向服务器附送一些自身的信息,用来业务使用等。主要列举一些,如下:

    Accept  指定客户端能够接收的内容类型    例:Accept:text/plain,text/html

    Accept-Charset  浏览器可以接受的字符编码集,分别是GB2312、utf-8和任意字符,优先顺序入排列顺序  例:Accept-Charset:GB2312,utf-8;q=0.7,*;q=0.7

    Accept-Encoding:gzip,deflate    浏览器支持的压缩编码是gzip和deflate

    User-Agent:Mozilla/5.0(compatible;域名)    使用的用户代理是Mozilla/5.0(compatible;域名)

    Host:域名    表示请求的服务器网址

    Connection:Keep-Alive  表示是否需要持久连接,HTTP1.1默认持久连接   

    Accept-Language:en,zh    浏览器可以接受的语言 

    Authorization    Http授权的授权证书类型

    Referer    指的是当前请求的来源

3.HTTP响应(response)

   具体参考下图:

   

    状态行:包括HTTP版本信息、状态码、状态描述。

    状态码

      状态码由三位数字组成,第一位数字定义了相应类型,共五种状态:

        1xx:指示信息,表示请求已经接收,继续下一步处理

        2xx:成功,表示请求已被服务器成功接收

        3xx:重定向

        4xx:客户端错误,一般为参数或地址错误

        5xx:服务端错误

      各个状态码意义

        100:继续,客户端继续请求

        101:切换协议,服务器根据客户端的请求切换协议

        200:请求成功

        201:请求成功并创建了新的资源

        202:已接收请求,但未处理完成

        203:非授权信息,服务器已成功处理了请求,但返回的信息可能来之另一个源

        204:无内容,服务器成功处理了请求,但是没有返回任何内容

        205:重置内容,服务器成功处理了请求,但是没有返回任何内容

        206:部分内容,服务器成功处理了请求,但是没有返回任何内容

        300:被请求的资源有一系列可供选择的回馈信息,每个都有自己特定的地址和浏览器驱动的商议信息

        301:永久移动,请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。

        302:临时移动,服务器目前从不同的网页响应请求,但请求者应继续使用原有位置来进行以后的请求

        303:请求者应当对不同的位置使用单独的GET请求来检索响应时,服务器返回此代码

        304:未修改,从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容

        305:使用代理,请求这只能使用代理访问请求的网页。如果服务器返回此响应,还表示请求这应该使用代理。

        307:临时重定向,服务器目前从不同的网页响应请求,但请求者应继续使用原有位置来进行以后的请求

        400:错误请求,服务器端不理解请求的语法

        401:未授权,请求要求验证身份信息,对于需要登录认证的网页,有可能返回此状态

        403:服务器拒绝请求

        404:服务器找不到请求的页面

        405:方法禁用,禁止使用请求中指定的方法

        406:无法使用请求的内用响应请求的网页

        407:应代理授权,指定请求者应当授权使用代理

        408:服务器请求超时

        409:服务器在完成请求时发生冲突

        410:请求资源已被删除

        411:服务器不接受不含有效内容长度表头字段的请求

        412:服务器为满足请求者在请求中设置的其中一个前提条件

        413:请求实体过大

        414:请求的url过长

        415:服务器无法处理请求的媒体格式,有可能在请求时不加content-type汇报这个错误

        416:请求范围不符合要求

        417:服务器为满足“期望”请求标头字段的要求

        500:服务器遇到错误

        501:服务器不支持请求的功能,请求方法错误可能报这个错误

        502:错误网关,服务器作为网关或者代理,从上游服务器收到无效响应  

        503:服务器目前无法使用

        504:服务器充当网关或者代理时,没有及时从上游服务器收到响应

        505:服务器不支持目前的http协议

4.HTTP缺点:

  1.)通讯使用明文(不加密),内容可能会被窃听

  2.)不验证通信方的身份,因此有可能遭遇伪装

  3.)无法证明报文的完整性,有可能已被篡改

  详细信息,可看https://blog.csdn.net/wangxp423/article/details/80033225

      

posted @ 2022-10-12 15:50  奔跑的哈密瓜  阅读(29)  评论(0编辑  收藏  举报