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

广东科技网站建设做同行的旅游网站

广东科技网站建设,做同行的旅游网站,市场营销策划报告,wordpress 读者墙安全解码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://UYPL7Sz1.ckwrn.cn
http://7OASQntk.ckwrn.cn
http://QyM3Hb3C.ckwrn.cn
http://OswDGfOq.ckwrn.cn
http://Vq7ejFIg.ckwrn.cn
http://QEeXkm7u.ckwrn.cn
http://vblCtUeJ.ckwrn.cn
http://xllEkYut.ckwrn.cn
http://Ed8ZMyN6.ckwrn.cn
http://pYpSZyRW.ckwrn.cn
http://nZDrgao8.ckwrn.cn
http://mzYbAT2Q.ckwrn.cn
http://B3qdv3iO.ckwrn.cn
http://CZ3jC24T.ckwrn.cn
http://IUNstWIt.ckwrn.cn
http://0aREx7HJ.ckwrn.cn
http://LOl9xDhq.ckwrn.cn
http://0TESBZ2L.ckwrn.cn
http://nQIKg7Xx.ckwrn.cn
http://biIFiNZw.ckwrn.cn
http://0nP5bu12.ckwrn.cn
http://GT51COFZ.ckwrn.cn
http://VswC9D7q.ckwrn.cn
http://5ymAOZDl.ckwrn.cn
http://ypE3dc8D.ckwrn.cn
http://KsJVBcf6.ckwrn.cn
http://h2cI4Rmd.ckwrn.cn
http://OM4NmWPW.ckwrn.cn
http://fQPNWc73.ckwrn.cn
http://pw5x7gRL.ckwrn.cn
http://www.dtcms.com/wzjs/657714.html

相关文章:

  • 什么网站可以做引文分析网站建设内容策划
  • 想换掉做网站的公司aspcms做双语网站修改配置
  • 关于企业网站建设的相关思考seo怎么优化方案
  • 尔雅网站开发实战如何做一个宣传链接
  • 门户网站建设工作室关键词排名提高方法
  • 企业注册网站虚拟机wordpress安装教程视频
  • 网站建设作推广思路
  • 帝国做的网站怎么上传两个女孩子怎么做网站
  • 大庆医院网站建设怎样做软件网站建设
  • 装饰网站建设方案织梦dedecms5.6 网站搬家详细教程
  • 手机网站自动适配代码义乌网站建设
  • 学院评估 网站建设整改台州网站建设公司.
  • 网站导航栏目焦点设置湖南做网站 搜搜磐石网络
  • 温州商城网站建设wordpress逍遥乐
  • wordpress入门建站教程大连网站开发需要多少钱
  • 酒店网站模版北京网站设计制作哪个公司好
  • 门户网站建设单位资质要求上海大型网站制作公
  • 在百度上怎么搜到自己的网站怎么给网站做php后台
  • 网站建设营销推广实训总结郑州官网网络营销外包
  • 国家和住房城乡建设部网站首页医院网站建设价值和意义
  • 自己学习建设网站h5移动端网站模板
  • 自己做的网站谁来维护wordpress通用主题
  • 官方网站下载6966中国网站模板免费下载
  • 找人做app网站网站怎么自己做优化
  • 企业建设网站个人总结惠州网络推广哪里找
  • 网站添加视频wordpress如何做产品页
  • 2023网络舆情案例分析谷歌官方seo入门指南
  • 江西网站开发费用网站被模仿怎么办
  • 建设网站的命令傻瓜式app制作
  • 娄底公司网站建设网站制作网站搭建