HTTP

Posted xinzaiyuan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP相关的知识,希望对你有一定的参考价值。

1、什么是http

1. HTTP是一个客户端和服务器端请求和应答的标准(TCP)

2. 设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法

2、http报文格式

1)请求行

   求方法字段、URL字段和HTTP协议版本(例如:GET /index.html HTTP/1.1)

2)请求头(key value形式)

   User-Agent:产生请求的浏览器类型。
   Accept:客户端可识别的内容类型列表。
   Host:主机地址

3)请求数据

   post方法中,会把数据以key value形式发送请求

4)报文举例

    注:cookie要在header里面而不放在body里面

        

3、浏览器一个HTTP请求的过程

      1. 域名解析

      2. 发起TCP的3次握手,建立TCP连接后发起http请求 

      3. 服务器响应http请求,浏览器得到html代码

      4. 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等)

      5. 浏览器对页面进行渲染呈现给用户

4、http常用状态码

    1)200系列:成功

        200 OK - [GET]:服务器成功返回用户请求的数据

        201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。

        204 NO CONTENT - [DELETE]:用户删除数据成功。

    2)300系列:重定向

    3)400系列:用户自身错误

        400   用户请求错误,数据库没有修改

        401   未授权   :表示用户没有权限(令牌、用户名、密码错误)。

        403   Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。

        404   NOT FOUND  - [*]:用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的。

        406 Not Acceptable - [GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)。
        410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的。
        422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误。

    4)500系列:服务器内部错误

        500   服务器内部错误    INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。

        503   服务不可用         服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。

5. 简述HTTP和HTTPS的区别?

HTTP 明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好。

使用 HTTPS 协议需要到 CA(Certificate Authority,数字证书认证机构) 申请证书,一般免费证书较少,因而需要一定费用。证书颁发机构如:Symantec、Comodo、GoDaddy 和 GlobalSign 等。

HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。

http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。

HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,要比较 HTTPS 比 HTTP 要更耗费服务器资源。

以上是关于HTTP的主要内容,如果未能解决你的问题,请参考以下文章

Flutter 报错 DioError [DioErrorType.DEFAULT]: Bad state: Insecure HTTP is not allowed by platform(代码片段

如何从一个片段导航到另一个片段?

这两个代码片段有啥区别?

超级有用的9个PHP代码片段

postman 自动生成 curl 代码片段

postman 自动生成 curl 代码片段