vue项目经验:图形验证码接口get请求处理
2018-02-12 13:56
1926 查看
一般图形验证码处理:
直接把
img标签的
src指向这个接口,然后在
img上绑定点击事件,点击的时候更改
src的地址(在原来的接口地址后面加上随机数即可,避免缓存)
<img :src="codeImg" class="img-code" @click="updateCode" alt="验证码" title="点击换一张">
export default { data () { codeImg: `${this.baseUrl}/captcha/captcha.php }, methods: { updateCode() { this.codeImg = `${this.baseUrl}/captcha/captcha.php?=${Math.random()}`; } } }
但是,有一天,后端说,在接口的响应头里放了一些信息,需要提交form表单时,一并提交。然后用axios的get请求,尴尬了,响应的是数据流,显示不出图片了。
解决方案如下:将数据流转换为图片
首先html结构不变,把js改了。
export default { data () { imgCode: '', // 一定要有 captchaId: '' // 后端需要的响应头中的信息参数 }, created () { this.updateCode() }, methods: { updateCode () { let _this = this this.axios.get(`${this.urlBase}/user/captcha?=${Math.random()}`, { responseType: 'arraybuffer' }).then((res) => { // 后端需要的响应头中的信息参数赋值 this.captchaId = res.headers['x-ocp-captcha-id'] // 转换 let codeImg = 'data:image/png;base64,' + btoa( new Uint8Array(res.data).reduce((data, byte) => data + String.fromCharCode(byte), '') ) _this.codeImg = codeImg }) }, } }
相关文章推荐
- vue开发:axios的post请求接口出现404,但是get则成功
- vue项目axios请求接口,后端代理请求接口404,问题出现在哪?
- JavaWeb项目的中文乱码的原因以及Servlet中处理GET请求和POST请求编码过滤器
- Vue------第五天(Vue的Ajax请求,使用Axios,目前熟悉了一下,主要包括GET请求、POST请求、并发请求、请求参数的配置、服务器响应的结构以及对服务器响应错误的简单处理)
- 关于vue项目中,axios请求方式,跨域请求的处理
- JavaWeb项目的中文乱码的原因以及Servlet中处理GET请求和POST请求编码过滤器
- JQurey中的getJSON方法请求的接口有错误时的处理方法
- vue-cli 搭建的项目处理不同环境下请求不同域名的问题
- vue项目开发遇到的问题:如何改变请求的host以及referer抓取做了host以及referer限制的接口数据
- 基于vue-cli的vue项目之axios的使用3--get传参请求
- 详解vue-cli 构建项目 vue-cli请求后台接口 vue-cli使用axios、sass、swiper
- vue proxyTable 接口跨域请求问题处理
- vue中axios处理http发送请求的示例(Post和get)
- vue项目的webpack设置请求模拟数据的接口方法
- vue-cli项目开发/生产环境代理实现跨域请求+webpack配置开发/生产环境的接口地址
- android AsynTask处理返回数据和AsynTask使用get,post请求
- 无论url请求什么.都可以拼接class类名.实例化.传递get参数-->给当前控制器-->传递给抽象父类-->都交给抽象父类.这个方法去处理call_user_func_array()
- vue-cli的axios使用方法,get、post请求的跨域问题解决
- 基于vue-cli的vue项目之axios的使用4--并发请求
- 在vue-cli搭建的项目中在后台mock接口中支持req.body和req.cookies