HTTP协议:是Hyper Text Transfer Protocol的缩写
HTTP协议:是超文本传输协议,广义的讲是资源传输协议
支持 B/S、C/S 架构模式
简单快速: 客户向服务器请求服务时,只需传送 请求方法、url、请求参数 等
灵活: HTTP允许传输任意类型的数据对象(正在传输的类型由Content-Type加以标记)
短连接: 每次请求都需要新建立一个连接,请求完成,连接就断开
无状态: 指协议对于事务处理没有记忆能力
由客户端发起,其规范格式为:请求行、请求头、请求主体
请求行:由请求方式、请求URL、协议版本 构成
请求主体:即传递给服务端的数据
由服务器发出,其规范格式为:状态行、响应头、响应主体
状态行: 由协议版本号、状态码和状态信息构成 HTTP/1.1 200 OK
响应主体: 服务端返回给客户端的内容
状态代码 由三位数字组成,第一个数字定义了响应的类别,共分五种类别:
1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收、理解、接受
3xx:重定向--要完成请求必须进行更进一步的操作
4xx:客户端错误--请求有语法错误或请求无法实现
5xx:服务器端错误--服务器未能实现合法的请求
200:客户端 请求成功
301:永久 网页重定向,也就是接收到响应后会自动跳转一个新的url(可从响应的Location首部中获取这个url)
302:暂时 网页重定向,也就是接收到响应后会自动跳转一个新的url(可从响应的Location首部中获取这个url)
304:告诉客户端本地缓存数据可用
400 Bad Request //客户端请求有语法错误,不能被服务器所理解
401:请求未授权,也就是服务器无法辨别用户身份,需要先登录
403:客户端无权访问,服务端拒绝提供服务
404:请求的资源在服务器上未找到
415:请求数据的格式 服务器不支持
500:服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理
503:服务器当前不能处理客户端的请求,一段时间后可能恢复正常
请求数据量4kb左右(较小):查询字符串的长度受到web浏览器和web服务器的限制(如IE最多支持2048个字符),不适合传输大型数据集
安全性较低
请求参数是作为一个 key/value
的查询字符串,附加到URL上 https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1
POST 方式请求
请求数据量较大
相对安全
请求参数,在请求体中,通过 xhr.send(request)
添加;并且需要设置请求头中的 Content-Type
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
用途: GET 请求常用于请求数据;POST 请求常用于存储、更新数据
请求参数的传输: GET 请求的请求参数,在URL中,?
连接,&
分割;POST 请求的请求参数在请求体中
请求数据 量大小: GET 请求数据量4kb左右 为上限;POST 请求数据量相对较大
安全问题: GET 请求 请求参数暴露在地址栏,不安全;POST 请求的请求参数在请求体中,相对安全
HTTP 工作流程 等同于 从输入URL到页面加载发生了什么? 简述如下:
(1)DNS 域名解析: 找到输入URL 对应的IP地址;查找顺序:本地域名服务器中 ---> 根域名服务器 ---> com顶级域名服务器
(2)TCP 连接: 建立一个从客户端 到 服务端的 HTTP 请求连接通道
(3)客户端发送 HTTP请求: 请求行、请求头、请求主体
(4)服务端响应 HTTP请求: 状态行、响应头、响应主体
(5)TCP 断开连接: HTTP优化 keep-alive
(6)浏览器渲染页面
原文:https://www.cnblogs.com/zxvictory/p/8748081.html