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(代码片段