如题,前端框架 vue,在写验证码功能时遇到问题。
正常的验证码显示,假设验证码路由为 /api/captcha 的话,如果用下面这种方式可以正常显示
<v-img
width="200px"
src="/api/captcha"
>
</v-img>
但是想到 captcha 申请需要同时发送一些信息,比如是谁在请求验证码,所以最好还是用 post 的方式来保证安全。
后端改一下路由方法就行,而前端百度了一下,思路应该是将返回的二进制图片数据转成 base64,html 就能解析了。
用了以下代码,结果不能正常显示
that.$axios.post({
url:'rand'
})
.then(response => Buffer.from(response.data, 'binary').toString('base64'))
.then(data => {this.src = data})
我打印了 bas64 编码后的文本,尝试解码进行校验, 解码后前几位字符为
\xfdPNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x01"\x00\x00\x00J\x08\x02\x00\x00\x00\xfd
真实字符应该是
\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x01"\x00\x00\x00J\x08\x02\x00\x00\x00\x90
可以看到个别字符变成了别的东西,不太懂是怎么回事,有没有大佬解惑,谢谢
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.