当前位置: 首页 > wzjs >正文

网站建设html手套网站模板

网站建设html,手套网站模板,网站如何防止重登录,网站怎样做优化调整安全解码base64 为什么前端需要安全解码base64atob安全解码base64前端页面之间传递标准base64安全解码失败遇到的问题重定向后,从url获取base64解析失败问题 为什么前端需要安全解码base64 在javascript中,标准的base64是一个连续的字符串,只…

安全解码base64

    • 为什么前端需要安全解码base64
    • atob安全解码base64
    • 前端页面之间传递标准base64
    • 安全解码失败遇到的问题
      • 重定向后,从url获取base64解析失败问题

为什么前端需要安全解码base64

在javascript中,标准的base64是一个连续的字符串,只包括(A-Z、a-z、0-9、+、/),不包含空格或其他非Base64字符,根据Base64编码的规则,每4个字符一组,如果最后一组不足4个字符,需要用=填充(如果最后一组只有一个字符就需要填充3个=号,如果是Base64URL编码,这些字符可能会被省略)。在URL中,+被用作空格的编码,而/是URL的路径分隔符。因此,在将Base64编码的数据放入URL中时,通常会使用-和_分别替换+和/,。这种编码被称为Base64 URL编码或Base64URL。

atob安全解码base64

// base64Str是需要解码的base64
function urlSafeBase64Decode(base64Str){// 将URL安全的Base64字符替换为标准Base64字符let str = base64Str;if (base64Str.indexOf("-") > -1 || base64Str.indexOf("_") > -1) {str = base64Str.replace(/-/g, "+").replace(/_/g, "/");}const pad = str.length % 4;if (pad) {str += new Array(4 - pad).fill("=").join("");}// 使用window.atob()解码字符串const binaryStr = window.atob(str);// 解析中文const bytes =  Uint8Array.from(binaryStr, (m) => m.codePointAt(0));// 使用TextDecoder将二进制数据解码为UTF-8字符串const decoder = new TextDecoder("utf-8");const utf8Str = decoder.decode(bytes);return utf8Str;};

前端页面之间传递标准base64

需要使用encodeURIComponent和decodeURIComponent,对参数编码和解码,编码过后的base可以使用URLSearchParams来获取参数

let url = "https://xxxx/page?data=" + encodeURIComponent("标准base64"); // "Some binary data"的Base64编码// 使用URL对象解析URL
let urlObj = new URL(url);
let params = new URLSearchParams(urlObj.search);// 获取并解码Base64参数
let base64Data = decodeURIComponent(params.get("data"));// 现在你可以安全地使用base64Data了
let decodedData = window.atob(base64Data);

安全解码失败遇到的问题

浏览器控制台报错: Failed to execute ‘atob’ on ‘Window’: The string to be decoded is not correctly encoded. 都是因为传入atob()的参数不是标准的base64

重定向后,从url获取base64解析失败问题

服务端:在url上返回标准的base64编码,含有+和/符号,前端使用new URLSearchParams()来获取参数值,会将字符串中的+号替换成空格,导致解析失败。同时url上使用标准的base64,在使用window.location.href重定向后,服务端接收到的是编译后的字符串

解决方式:
1、服务端返回安全base64 ( 上文提到的Base64 URL ) --(推荐)
2、前端使用字符串分割的方式获取

const getUrlSplitParams = (url, key) => {const [_, params] = url.split('?')const paramsArr = params.split('&')const newParams = {}paramsArr.forEach((item) => {const [key, value] = item.split('=')newParams[key] = value})if (key) {return newParams[key]}return newParams
}

文章转载自:

http://dHwIpc7J.Lykmf.cn
http://EiKYiBb8.Lykmf.cn
http://RUKvuDB5.Lykmf.cn
http://aP8RjIGc.Lykmf.cn
http://oc04l8BA.Lykmf.cn
http://aeE3CF5I.Lykmf.cn
http://ITqUC4sc.Lykmf.cn
http://lY9KZIli.Lykmf.cn
http://8EQtZ1Xf.Lykmf.cn
http://TfTzmGg9.Lykmf.cn
http://L0VEcoKt.Lykmf.cn
http://rKiXw6R2.Lykmf.cn
http://Ci2dP5Dp.Lykmf.cn
http://42nDRLVO.Lykmf.cn
http://Meu4oupw.Lykmf.cn
http://u2XLZNn1.Lykmf.cn
http://4y6M8mfK.Lykmf.cn
http://Sqaugdj9.Lykmf.cn
http://1kRUL81H.Lykmf.cn
http://iedtbS5a.Lykmf.cn
http://ergh1vOT.Lykmf.cn
http://KlcVZmxi.Lykmf.cn
http://2oDjuKNx.Lykmf.cn
http://Ow4UC941.Lykmf.cn
http://Gea07Jz9.Lykmf.cn
http://4z9z1202.Lykmf.cn
http://c0BaMGRF.Lykmf.cn
http://T0F1A1MO.Lykmf.cn
http://j0w2nNzy.Lykmf.cn
http://CcdaHPPl.Lykmf.cn
http://www.dtcms.com/wzjs/775593.html

相关文章:

  • 汽车网站名称网站建设怎么问问题
  • 怎么做定位钓鱼网站金坛网页设计
  • 信阳网站建设制作视频的软件哪个最好免费的
  • 网站开发需求清单做网站有底薪吗
  • 书写网站建设策划书景观设计公司有哪些
  • app网站开发合同wordpress apple
  • excel可以做网站吗电脑软件推广联盟
  • 太原网站建设 网站制作wordpress分类添加自定义字段
  • 四川省住房与城乡建设厅网站官网手机房屋平面设计软件
  • 秦皇岛网站开发做网站的费用怎么做账
  • 甘肃网站建设的过程建设网贷网站
  • 自助做网站齐家网装修官网
  • 申请微官网的网站长沙做网站企业
  • 做网站比较好的公司大同工程建设信息网
  • 青岛网站建设服务器wordpress 是谁开发的
  • 河北省建设安全监督站的网站苏州品牌网站设计
  • 有哪些可以做兼职翻译的网站造价师在哪个网站做继续教育
  • 优购商城网站建设苏宁易购网站建设的不足之处
  • 做it的兼职网站支付宝网页版
  • 网站架构模式用哪种网站域名登陆
  • 响应式网站开发支持ie6解决自学摄影教程的网站有哪些
  • 中国各大网站排名邵阳汽车网站建设
  • 网站付费推广有哪些建设工程施工合同的当事人包括
  • 合肥外贸网站建设公司广州网站建设与网页设计
  • 用pc网站建设手机网站门户网站开发注意事项
  • 什么网站做h5不收费怎么做网站推广图片
  • 可信网站认证的区别怎么做软文网站
  • 做网站一年赚80亿瑞华特散热器网站谁给做的
  • 中山网站建设 骏域青海建设厅网站首页
  • 虚拟主机网站被挂马做包装设计的网站有哪些