ajax fetch axios

1.31. ajax fetch axios

ajax
对原生XML Http Request(XHR)的封装,增加了对jsonp的支持
缺点:1.如果有多个请求,并且有依赖关系的话,容易形成回调地狱。(主要是因为ajax会在回调函数里面继续发请求)
2.本身是针对MVC的编程,不符合现在前端MVVM的浪潮。
3.ajax是jQuery中的一个方法。如果只是要使用ajax却要引入整个jQuery非常的不合理。
特点:局部刷新页面,无需加载整个页面
Ajax是一种思想,XML Http Request只是实现ajax的一种方式
实现过程:
 创建 Ajax的核心对象 XMLHttpRequest对象
 通过 XMLHttpRequest 对象的 open() 方法与服务端建立连接
 构建请求所需的数据内容,并通过XMLHttpRequest 对象的 send() 方法发送给服务器端
 通过 XMLHttpRequest 对象提供的 onreadystatechange 事件监听服务器端你的通信状态
 接受并处理服务端向客户端响应的数据结果
 将处理结果更新到 HTML页面中
在这里插入图片描述
Fetch (在ES6中提出来的)
fetch是XML Http Request的替代品,fetch是基于promise设计的,fetch不是ajax的进一步封装,而是原生js,没有使用XMLHttpRequest对象。是一个API是真实存在的

  1. 使用promise,不使用回调函数
  2. 采用模块化设计,比如rep、res等对象分散开来,比较友好
  3. 通过数据流对象处理数据、提高网站性能(最主要的好处)
    1.fetch只对网络请求报错,对400,500都当做成功的请求,需要封装去处理
    2.fetch默认不会带cookie,需要添加配置项( 发送cookies 需要设置 fetch(url, {credentials: ‘include’}) 选项。)。
    3.fetch不支持abort(取消请求),不支持超时控制,使用setTimeout及Promise.reject的实现超时控制并不能阻止请求过程继续在后台运行,造成了流量的浪费。
    4.fetch没有办法原生监测请求的进度,而XHR可以。
    在这里插入图片描述
    Axios(因为与框架结合的比较好)
    Axios是一个基于promise的HTTP库,可以用在浏览器和 node.js 中。它本质也是对原生XMLHttpRequest的封装,只不过它是Promise的实现版本,符合最新的ES规范。是一个封装库
    1.从浏览器中创建XMLHttpRequest
    2.从 node.js 创建 http 请求
    3.支持 Promise API
    4.提供了一些并发请求的接口 axios.all();
    5.客户端支持防御XSRF( 每个请求都带一个从cookie中拿到的key, 根据浏览器同源策略,假冒的网站是拿不到你cookie中得key的,)
    6.自动转化JSON数据
    7.拦截请求和响应
    8.取消请求

Axios(因为与框架结合的比较好)
Axios是一个基于promise的HTTP库,可以用在浏览器和 node.js 中。它本质也是对原生XMLHttpRequest的封装,只不过它是Promise的实现版本,符合最新的ES规范。是一个封装库
1.从浏览器中创建XMLHttpRequest
2.从 node.js 创建 http 请求
3.支持 Promise API
4.提供了一些并发请求的接口 axios.all();
5.客户端支持防御XSRF( 每个请求都带一个从cookie中拿到的key, 根据浏览器同源策略,假冒的网站是拿不到你cookie中得key的,)
6.自动转化JSON数据
7.拦截请求和响应
8.取消请求

ajax axios fetch跨域默认不携带cookie
1.客户端需要设置withCredentials:true(ajax,axios) credentials: ‘include’(fetch)
2.服务端需要设置响应头 access-control-allow-credentials:true
同时必须指明 access-control-allow-origin 为服务方的origin, 不能为*

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值