1.http协议
HTTP协议,它规定了在网络中发布,传输和接收html页面的方法。大家都遵循这个协议,就能实现信息传输。
HTTP请求(Request)消息:客服端发送给服务器的消息
HTTP响应(Response)消息:服务端返回客户端的消息
2.http协议的工作流程
(1)客户端连接到web服务器
一个HTTP客户端,通常是浏览器,与web服务器的HTTP端口(默认80)建立一个TCP套接字连接,如,
http://www.baidu.com
(2)发送http请求
通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。
(3)服务器接受请求并返回HTTP响应
web服务器解析请求,定义请求资源,服务器讲资源复本写到TCP套接字,由客户端读取,一个响应由状态、响应头部、空行、和响应数据组成。
(4)释放连接TCP连接
客户端和服务端建立建立连接,客户端沿着建立好的连接发送请求,服务端返回响应消息信息再断开连接。
(5)客户端浏览器解析HTML内容
客户端浏览器首先解析状态行,查看表明是否成功的状态码,然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTMl语法对其进行格式化,并在浏览器窗口显示。
例如:在浏览器地址栏输入URL,按下回车之后会经历以下流程:
1、浏览器向DNS服务器请求解析该URL中的域名所对应的IP地址;
2、解析出IP地址后,根据该IP地址和默认端口80,和服务器建立TCP连接;
3、浏览器发出读取文件(URL中域名后面部分对应的文件)HTTP请求,请求该报文作为TCP三次握手的第三个报文数据发送给服务器;
4、服务器对浏览器请求作出响应,并把对应的HTML文本发送给浏览器;
5、释放TCP连接;
6、浏览器将该HTML文本并显示内容;
3. HTTP请求的状态码
1xx 指示信息--表示请求已接收,继续处理
2xx 成功--表示请求已被成功接收,理解,接受
3xx 重定向--要完成请求必须进行更进一步操作
4xx 客户端错误--请求有语法错误或请求无法实现
5xx 服务器端错误--服务器未能实现合法的请求
常见的状态码
200 OK 客户端请求成功
400 Bad Request 客户端请求有语法错误,不能被服务器所理解
401 Unauthorized 请求未经授权,这个状态码必须和WWW-Authenticate报头域一起使用
403 Forbidden 服务器收到请求,但是拒绝提供服务
404 Not Found 请求资源不存在,输入了错误的URL
500 Internal Server Error 服务器发生不可预期的错误
503 Server Unavailable 服务器当前不能处理客户端的请求,一段时间后可能恢复正常
.jQuery 的AJAX请求
$.ajax({
type: "GET", //GET/POST/PUT/DELETE/HEAD
url: "URL", //请求URL地址
data: "k=v"或{k:v} //要提交的请求数据
beforeSend: fn, //请求发送之前的回调函数
success: fn, //响应成功的回调函数
error: fn, //响应失败的回调函数
complete: fn //响应完成的回调函数,不论成功与失败
})
响应成功回调顺序:
beforeSend => success => complete
响应失败回调顺序:
beforeSend => error => complete;
4. axios
axios是一个基于promise用于浏览器和node.js的HTTP客户端;
axios的特点:
(1)从浏览器中创建 XMLHttpRequest
(2)从node.js中发出http请求
(3)支持promise API
(4)拦截请求和响应
(5)转换请求和响应数据
(6)取消请求
(7)自动转换json数据
(8)客户端支持防止CSRF/XSRF
vue中axios的ajax请求:
let axios = require('axios')
axios.type(请求方式)('url',{params:{id:12345}//通过parmas传递进来的参数}).then(function(response);
console.log(response);
) .catch(function(error){
console.log(error);
});
5. 微信小程序的ajax请求
wx.request({
url://路径
method://请求方式
dataType:// 请求数据类型
data://传递的参数
header: {
'Content-Type': 'xxxx'
}
success:function(res){
}
})
网友评论