vue.js客服系统实时聊天项目开发(十七)解决url get传参后进行base64解密问题

文章讨论了在URL中使用Base64编码传递参数时遇到的问题,即由于URL编码导致的解码失败。作者提供了一个兼容处理的JavaScript函数,该函数首先对URL解码,然后正确地解码Base64字符串,处理了%20与+号的转换问题。
摘要由CSDN通过智能技术生成

有些参数需要在url的GET里传递,但是为了防止特殊字符问题,我转成了base64编码。

但是js进行解码的时候,总是报错:

报错: Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.

这是因为base64在url中会进行url编码,+号会被转成%20

这就需要我们在拿到get参数后,进行url解码,js自带的解码函数会把%20转成空格,这时就会转码失败

下面函数是一些兼容处理

function urlDecode(str) {
  return decodeURIComponent(str.replace(/\%20/g, '+'));
}
// Base64解密
function b64DecodeUnicode(str) {
    str=urlDecode(str);
  return decodeURIComponent(atob(str.replace(/\_/g, '/').replace(/\-/g, '+'))
    .split('')
    .map(function (c) {
      return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
    })
    .join(''));
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值