vue项目经验:图形验证码接口get请求处理
  
一般图形验证码处理:
直接把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项目经验:图形验证码接口get请求处理的更多相关文章
- Vue项目经验
		
Vue项目经验 setInterval路由跳转继续运行并没有及时进行销毁比如一些弹幕,走马灯文字,这类需要定时调用的,路由跳转之后,因为组件已经销毁了,但是setInterval还没有销毁,还在继续后 ...
 - vue 项目,获取手机验证码和图形验证码(iviewUI框架)
		
1.编辑获取验证码模块 <Form ref="phoneFormItem" :model="phoneFormItem" :label-width=&qu ...
 - 入职一个月快速熟悉大型Vue项目经验感想
		
来到和睦的公司家庭已经一个月出头了,从技术层面来说,公司项目PC端是我目前来说接触的最大最复杂的项目了,德老师也说这个不断开发更新迭代的项目的代码量相对于全国的web来说是蛮多的,对于快速熟悉这样的大 ...
 - Java Web项目使用图形验证码 — Kaptcha
		
一.验证码介绍 生成的主要方式: 1.使用Java原生的方式,其中包含了Servlet.AWT.ImageIO的使用: 2.使用开源库,例如Jcaptcha.Kaptcha...: (各图形验证码开源 ...
 - vue 项目中实时请求接口 建立长连接
		
需求:在项目中需要每隔五秒请求一次接口 第一种方法:直接在mounted钩子函数中处理 mounted() { window.setInterval(() => { setTimeout(thi ...
 - 本地vue项目跨域服务器接口
		
1,打开index.js文件,找到 proxyTable 参照下面链接的方法,你们可以去点赞 https://www.douban.com/note/704314260/?type=like#sep
 - 一百一十五:CMS系统之实现点击更换图形验证码功能
		
把验证码渲染到到页面上 访问,显然,是标签有个内边距 去掉内边距 加一个class 如果放大看的话,还有问题 用js实现点击更换图形验证码:生成查询字符串的形式访问图形验证码接口的url,放到img标 ...
 - Vue 做项目经验
		
Vue 做项目经验 首先需要知道最基本的东西是: Vue 项目打包:npm run build Vue生成在网页上看的端口:npm run dev 修改端口号的地方在: config文件夹下index ...
 - vue项目实战经验汇总
		
目录 1.vue框架使用注意事项和经验 1.1 解决Vue动态路由参数变化,页面数据不更新 1.2 vue组件里定时器销毁问题 1.3 vue实现按需加载组件的两种方式 1.4 组件之间,父子组件之间 ...
 
随机推荐
- Codeforces Round #541 (Div. 2) D 并查集 + 拓扑排序
			
https://codeforces.com/contest/1131/problem/D 题意 给你一个n*m二维偏序表,代表x[i]和y[j]的大小关系,根据表构造大小分别为n,m的x[],y[] ...
 - bind函数(c++11)
			
1.概念 1)c++11使用bind()函数可以向函数传递参数,一般调用形式为: 返回的newCallable是一个可调用的对象,callable是需要传参的函数,arg_list是参数列表 2)bi ...
 - C++STL queue
			
queue队列 先进先出 queue<int> q1; q1.push();//插入元素 q1.front();//求队头元素 q1.pop();//删除队头元素 q1.empty();/ ...
 - sql随机抽取数据
			
mysql: select * from tablename order by rand() limit 10 sqlserver: select top 10 * from tablen ...
 - verilog中的多维数组
			
reg arrayb [7:0] [0:255] ;//二维数组.
 - Flex布局(CSS Flexbox)
			
参考:Flex 布局语法教程 Flex布局是什么? Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性. 任何一个容器都可以指定为Flex布局 注意:设为Fle ...
 - linux上搭建solr(用jetty部署)
			
环境搭建:centos7及solr7版本 描述:最新版本的solr内置了jetty容器,可以支持jetty部署,从而不需要发布到tomcat下面 首先同样先在/usr/local/mypackage上 ...
 - 配置React的Babel 6和Webpack 2环境
			
Facebook的一帮子工程师在忙碌之余开发除了一套前段UI框架React.这个框架最大的有点就在于让UI的开发都基于组件,这样View都是根据props和state变化的. 项目地址:https:/ ...
 - (动规 或 最短路)Help Jimmy(poj 1661)
			
http://poj.org/problem?id=1661 Description "Help Jimmy" 是在下图所示的场景上完成的游戏. 场景中包括多个长度和高度各不相同的 ...
 - (暴力 记录)Camellia的难题 -- zzuli -- 1784
			
http://acm.zzuli.edu.cn/problem.php?id=1784 Camellia的难题 Time Limit: 2 Sec Memory Limit: 128 MBSubmi ...