ajax(异步 JavaScript 和 XML)是什么?
我们不可能一味的编写静态页面,有时需要动态获取数据,而Ajax就可以在js代码中动态地获取数据,
http及https是什么?
http是一种网络传输协议 ,超文本传输协议,建立在tcp之上,定义了发送接收传输的信息规则,
https=http+ssl(加密处理)
ajax和http的关系?
用ajax或者ajax封装的东西来发送http请求
http特点?
短链接:每次处理一个请求,链接后就断开
无状态:对处理的事务没有记忆能力
http媒体独立:只要两端知道处理内容格式 ,使用适合的 MIME-type 内容类型。啥都能传。
一个非常基本的xml请求
注意,这里有很多可以做特殊处理,比如说,请求结束,成功,超时,出错,还可以设置请求头,请求数据类型
把这个请求丰富功能,封装之后就是ajax,除了用这个还刻有jquary封装ajax
xml之后是fetch但现在也很少人用它返回的是promiss对象
axios这个是非常重要的,现在都用
1.ajax是基于xhr+request封装的ajax库
2.浏览器端和node端都可以使用
3.支持拦截器
4.支持请求取消
axios可以支持手写发送请求,但大部分时间我们用脚手架工具安装axios所以主要学在工具里使用
- axios.get(url[, config])
- axios.post(url[, data[, config]])
- axios.put(url[, data[, config]])
- axios.delete(url[, config])**config参数对象中常用的属性:**
- `url`:必需的,是用于请求的服务器 URL,类型为 字符串
- `method`:可选的,是创建请求时使用的方法,类型为 字符串,默认值为: 'get'
- `headers`:可选的,是即将被发送的自定义请求头,类型为 Object对象,例如:`{'Content-Type': 'Application/json'}`
- `data`:可选的,是作为请求主体被发送的数据,只适用于这些请求方法 'PUT', 'POST', 和 'PATCH'。支持常见的数据类型:plain object、FormData、URLSearchParams、File
- `params`:可选的,是即将与请求一起发送的 URL 参数,类型必须是一个无格式对象(plain object)或 URLSearchParams 对象
- `timeout`:可选的,指定请求超时的毫秒数(0 表示无超时时间),默认值为 1000。如果请求超过 `timeout` 的时间,请求将被中断。
- `responseType`: 可选的,表示服务器响应的数据类型,可以是 'json', 'text' 等,默认值为 'json'使用 `then(response => {})` 返回接收服务端响应,响应信息对象response包含以下信息 :
在工具里使用(vue-cli)
1.安装axios有时需要去序列化也许安装qs(把一个json对象转为?&那种形式
2.在主函数中导入,用脚手架安装默认在module中直接./导入即可,其他插件也一样
3.导入
import axios from 'axios'
axios.defaults.basseURL=______
vue.prototype.$axios=axios
挂在到vue原型上调用方便如axios.get等,文章里有原型知识
4.可以设置axios拦截器
axios.interceptors.response.use(function(....
axios.interceptors.request.use(function(....
http状态码
- 200 - 请求成功
- 301 - 资源(网页等)被永久转移到其它URL
- 404 - 请求的资源(网页等)不存在
- 500 - 内部服务器错误
http请求与相应格式
跨域(浏览器阻止的跨域,服务器不会跨域)
### 4.2 跨域解决方案
实际开发中,跨域发送请求是避免不了的。比如,
1. 我们在公司开发一套全新的前端项目,需要部署在单独的服务器上,
2. 而提供数据的后台接口项目也是独立部署在一个服务器上,
3. 此时,两台服务器部署项目时就会造成域名不一致的问题
4. 当前端向后台发起HTTP请求时,就会因为跨域请求而被浏览器拒绝了既然,避免不了就要想办法绕开浏览器的同源策略,去完成跨域请求。
这里列举常见的一些解决方案:
1. CORS:跨域资源共享。就是在后台服务器端配置允许某个域名下的请求。
2. 中间服务器代理,衍生的反向代理:分为正向代理与反向代理,通常使用反向代理,如proxy代理这个比较常用下面放个例子吧
用vue-cli为例子
proxy中
‘/api/v1’为这个路径重写跨域的 target(为跨域的域名)
changeOrigin 开启跨域
pathreWrite{
‘’api‘’:’‘/’‘}
3. JSONP:就是动态生成一个script,由于script的src不受同源策略的限制,就可以去请求不同域的接口1.不支持post请求