原文链接:https://dsx2016.com/?p=972

微信公众号:大师兄2016

无论是传递给后台url地址,还是前端复制链接和分享链接.

都需要对url进行处理,避免一些特殊符号等格式造成加载错误等

base64

url要处理的一般包括中文,+,#等特殊字符,以及回调地址等

在这里使用的是base64编码,使用的为github的第三方库js-base64

参考地址:

https://github.com/dankogai/js-base64

首先要明确的是,这个base64库可以过滤中文,但是加密结果依旧含有特殊符号,所以仍然需要单独对特殊符号进行处理.

过滤中文参考官方demo

加密

Base64.encode('dankogai');  // ZGFua29nYWk=
Base64.encode('小飼弾');    // 5bCP6aO85by+
Base64.encodeURI('小飼弾'); // 5bCP6aO85by-

解密

Base64.decode('ZGFua29nYWk=');  // dankogai
Base64.decode('5bCP6aO85by+');  // 小飼弾
// note .decodeURI() is unnecessary since it accepts both flavors
Base64.decode('5bCP6aO85by-');  // 小飼弾

特殊符号

作为url参数主要需要过滤base64高频且影响加载的内容,核心有以下8种

把特殊符号替换为16进制

+ 空格 / ? % & = #
%2B %20 %2F %3F %25 %26 &3D %23

进行base64编码后,在使用js过滤,参考代码如下

// 加密url
import { Base64 } from 'js-base64';
let urlStr=Base64.encodeURI(url)
​
// 过滤特殊符号
urlStr = urlStr.replace(/\+/g, "%2B");
urlStr = urlStr.replace(/\=/g, "&3D");
urlStr = urlStr.replace(/\&/g, "%26");
urlStr = urlStr.replace(/\//g, "%2F");
urlStr = urlStr.replace(/\#/g, "%%23");
urlStr = urlStr.replace(/\?/g, "%3F");
urlStr=urlStr.replace(/\s/g,"%20");
urlStr = urlStr.replace(/\%/g, "%25");

解密

使用base64decode

注意decode可以解密encodeencodeURI两种

let url=Base64.decode(urlStr)

注意事项

使用encode会可能产生以下乱码,建议对url使用encodeURI加密

浏览器报错信息如下(其是就是base64加密解密除了问题,以及乱码)

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

js对url进行base64加密解密相关推荐

  1. js 对 URL 参数进行 加密 解密

    2019独角兽企业重金招聘Python工程师标准>>> 1.我从这个页面 ,通过以下URL跳转到另一个页面,把参数加密,下面对参数   aid=970  进行加密 var aid=9 ...

  2. js怎么实现对html代码加密解密,JS实现Base64加密解密

    JavaScript实现Base64加密解密.Base64与其说是加密算法不如说是方便数据传输而生的数据转换手段. 测试代码:html> test .resource_enc, .resourc ...

  3. 在线BASE64加密解密、UrlEncode编码/解码、native/ascii在线转换工具 -toolfk程序员工具网

    本文要推荐的[ToolFk]是一款程序员经常使用的线上免费测试工具箱,ToolFk 特色是专注于程序员日常的开发工具,不用安装任何软件,只要把内容贴上按一个执行按钮,就能获取到想要的内容结果.Tool ...

  4. JS基于编码方式实现加密解密文本

    JS基于编码方式实现加密解密文本 严格来讲这是一种简单的编码方式:加密,将明文[注]转成编码.解密则是编码转码为明文本. [注:明文是指没有加密的文字(或者字符串),一般人都能看懂.] 下面源码用到 ...

  5. javascript base64加密解密

    javascript base64加密解密 <!DOCTYPE HTML> <html> <head> <meta charset="utf-8&q ...

  6. asp php base64 加密解密,base64加密解密_php base64_decode 解码方法

    base64加密解密_php base64_decode 解码方法 观点1: php实现base64加密解密 在PHP中我们可以直接使用PHP自带的函数 base64_encode() 和 base6 ...

  7. base64 加密解密

    js实现base64加密解密(适用于中文) //1.加密解密方法使用://1.加密 var str = '124中文内容'; var base = new Base64(); var result = ...

  8. js脚本锁计算机软件,JS使用插件cryptojs进行加密解密数据实例

    本文实例讲述了JS使用插件cryptojs进行加密解密数据.分享给大家供大家参考,具体如下: Testing websockets var key = 'BOTWAVEE'; //CBC模式加密 fu ...

  9. chrome 控制台 base64加密解密

    1.视界 2. 背景 因为在客户机器,要查询base64的解密信息,但是因为内网无法使用网络,只能拷贝软件本想查询插件,后来发现谷歌支持解密 3.方法 在chrome控制台上可以直接使用函数做base ...

最新文章

  1. linux虚拟机网络查看的方式
  2. 联通突然从4g变成3g了_中国联通最快明年底2G全面退网 并推进3G逐步退网
  3. 如何使用CREO来导入多个带坐标系参数的零件的装配图档
  4. java java se_Java SE 7、8、9 –推动Java前进
  5. pthread 简要使用指南
  6. java_IO总结(一)
  7. vue + element中el-table导出excel
  8. Mac os 10.15配置Java14和Eclipse环境
  9. leetcode每日一题:406.queue-reconstruction-by-height(根据升高重建队列)
  10. C++ vector 内存分配与回收机制
  11. 【备忘】加入L2范数正则化后的正规方程求解参数推导过程
  12. Java编程——九九乘法表
  13. 浅谈文字编码和Unicode(中)[转]
  14. uefi下添加显卡驱动
  15. shopex PHP Notice,SHOPEX 4.8.5 最新注入漏洞后台拿SHELL
  16. 高德地图API之定位API
  17. 大数据时代:大数据发展必备三个条件
  18. 熟悉FreeSWITCH 一
  19. 谷歌外链建设2022年如何判断和购买google优质外链
  20. Swift 3.0中GCD的常用方法

热门文章

  1. 是什么原因导致OutOfMemoryError?
  2. 使用pdf阅读器如何给文档添加标签
  3. gRPC android 监听server报错ProviderNotFoundException: No functional server found. Try adding a dependen
  4. MPB:扬州大学王梦芝组-​​反刍动物瘤胃原虫与细菌微循环测定方法
  5. 《vue使用nprogress》
  6. C语言 字符数据输入输出
  7. Java 多线程和线程同步总结
  8. 【PS】RGB互补色理论+色相理论
  9. 车辆识别——yolov5 + DeepSort_Pytorch
  10. 计算机二级OFFICE55小时复习攻略