關于微信小程序端base64解碼問題

由于atob是瀏覽器端的,對于微信小程序不支持,導致模擬器【開發工具】顯示正常,但真機異常解析失敗問題,微信小程序原有的api,官方文檔中也廢棄了

解決方案:

調用:

const decodedString = base64_url_decode(res.data);
const jsonData = JSON.parse(decodedString);

weAtob? 解密處理文件包 :

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
var b64re = /^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/;
exports.weBtoa = function (string) {string = String(string);var bitmap, a, b, c, result = "", i = 0, rest = string.length % 3;for (; i < string.length;) {if ((a = string.charCodeAt(i++)) > 255 ||(b = string.charCodeAt(i++)) > 255 ||(c = string.charCodeAt(i++)) > 255)throw new TypeError("Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.");bitmap = (a << 16) | (b << 8) | c;result += b64.charAt(bitmap >> 18 & 63) + b64.charAt(bitmap >> 12 & 63) +b64.charAt(bitmap >> 6 & 63) + b64.charAt(bitmap & 63);}return rest ? result.slice(0, rest - 3) + "===".substring(rest) : result;
};
exports.weAtob = function (string) {string = String(string).replace(/[\t\n\f\r ]+/g, "");if (!b64re.test(string))throw new TypeError("Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.");string += "==".slice(2 - (string.length & 3));var bitmap, result = "", r1, r2, i = 0;for (; i < string.length;) {bitmap = b64.indexOf(string.charAt(i++)) << 18 | b64.indexOf(string.charAt(i++)) << 12 |(r1 = b64.indexOf(string.charAt(i++))) << 6 | (r2 = b64.indexOf(string.charAt(i++)));result += r1 === 64 ? String.fromCharCode(bitmap >> 16 & 255) :r2 === 64 ? String.fromCharCode(bitmap >> 16 & 255, bitmap >> 8 & 255) :String.fromCharCode(bitmap >> 16 & 255, bitmap >> 8 & 255, bitmap & 255);}return result;
};
function b64DecodeUnicode(str) {return decodeURIComponent(exports.weAtob(str).replace(/(.)/g, function (p) {var code = p.charCodeAt(0).toString(16).toUpperCase();if (code.length < 2) {code = "0" + code;}return "%" + code;}));
}
exports.base64_url_decode = function (str) {var output = str.replace(/-/g, "+").replace(/_/g, "/");switch (output.length % 4) {case 0:break;case 2:output += "==";break;case 3:output += "=";break;default:throw "Illegal base64url string!";}try {return b64DecodeUnicode(output);}catch (err) {return exports.weAtob(output);}
}
function weappJwtDecode(token, options) {if (typeof token !== "string") {throw ("Invalid token specified");}options = options || {};var pos = options.header === true ? 0 : 1;try {return JSON.parse(base64_url_decode(token.split(".")[pos]));}catch (e) {throw ("Invalid token specified: " + e.message);}
}
exports.default = weappJwtDecode;

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/74003.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/74003.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/74003.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

鴻蒙NEXT項目實戰-百得知識庫03

代碼倉地址&#xff0c;大家記得點個star IbestKnowTeach: 百得知識庫基于鴻蒙NEXT穩定版實現的一款企業級開發項目案例。 本案例涉及到多個鴻蒙相關技術知識點&#xff1a; 1、布局 2、配置文件 3、組件的封裝和使用 4、路由的使用 5、請求響應攔截器的封裝 6、位置服務 7、三…

Adobe PR和AE2025到啟動頁面一會自動退出

Adobe PR和AE2025到啟動頁面一會自動退出 1查找程序啟動錯誤日志2解決方法3思考共勉 1查找程序啟動錯誤日志 查找程序啟動錯誤日志&#xff1a;事件查看器>Windows日志>應用程序 錯誤應用程序名稱: Adobe Premiere Pro.exe&#xff0c;版本: 25.1.0.73&#xff0c;時間…

Python Pyecharts面試題及參考答案

目錄 使用隨機數據繪制對比某品牌各季度銷量與庫存的柱狀圖,添加副標題和自定義顏色 繪制雙 Y 軸柱狀圖,展示城市人均收入和支出數據,并設置軸標簽旋轉 45 度 實現水平柱狀圖,展示不同編程語言的受歡迎指數,添加數據標簽 繪制動態溫度變化折線圖,包含平滑曲線和標記點…

【css酷炫效果】純CSS實現進度條加載動畫

【css酷炫效果】純CSS實現進度條加載動畫 緣創作背景html結構css樣式完整代碼基礎版進階版 效果圖 通過CSS漸變與背景位移動畫&#xff0c;無需JavaScript即可創建流體動態進度條。 想直接拿走的老板&#xff0c;鏈接放在這里&#xff1a;https://download.csdn.net/download/u…

安全地自動重新啟動 Windows 資源管理器Bat腳本

安全地自動重新啟動 Windows 資源管理器腳本 可以直接運行的 Windows 批處理腳本&#xff0c;用于安全地自動重新啟動 Windows 資源管理器。該腳本會在殺死資源管理器之前檢查是否有其他進程正在使用資源管理器相關的文件。 Bat腳本 echo off title 資源管理器安全重啟工具 co…

【NeurIPS-2022】CodeFormer: 將人臉復原轉化為碼本預測以減少LQ-HQ映射的不確定性

寫在前面&#xff1a;本博客僅作記錄學習之用&#xff0c;部分圖片來自網絡&#xff0c;如需引用請注明出處&#xff0c;同時如有侵犯您的權益&#xff0c;請聯系刪除&#xff01; 文章目錄 前言論文動機方法實驗 總結互動致謝參考往期回顧 前言 盲人臉恢復是一個高度不適定的…

k8s1.30 部署calio網絡

一、介紹 網路組件有很多種&#xff0c;只需要部署其中一個&#xff0c;推薦calio。 calio是一個純三成的數據中心網絡方案&#xff0c;calico支持廣泛的平臺。如k8s&#xff0c;openstack等。 calio在每一個計算節點利用linux內核&#xff0c;實現了一個高效的虛擬路由器來…

提升AI性能的秘密武器:量化、蒸餾與剪枝全面解析

通過高效的模型壓縮技術推進 NLP 在快速發展的自然語言處理 (NLP) 領域,模型的大小和復雜性顯著增加,從而顯著提高了性能。然而,這些龐大模型的部署和維護也帶來了挑戰,特別是在計算成本、功耗和資源受限用戶的可訪問性方面。本博客深入探討了量化、剪枝和蒸餾等尖端模型壓…

數據結構(python)-------棧和隊列2

目錄 二、隊列 &#xff08;一&#xff09;、定義 1. 定義 2. 邏輯結構 3. 存儲結構 4. 運算規則 5. 實現方式 &#xff08;二&#xff09;、隊列與一般線性表的區別 一般線性表 隊列 &#xff08;三&#xff09;、分類 …

基于SpringBoot的“校園招聘網站”的設計與實現(源碼+數據庫+文檔+PPT)

基于SpringBoot的“校園招聘網站”的設計與實現&#xff08;源碼數據庫文檔PPT) 開發語言&#xff1a;Java 數據庫&#xff1a;MySQL 技術&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系統展示 系統整體功能圖 局部E-R圖 系統首頁界面 系統注冊…

投資日記_道氏理論技術分析

主要用于我自己參考&#xff0c;我感覺我做事情的時候容易上頭&#xff0c;忘掉很多事情。 技術分析有很多方法&#xff0c;但是我個人相信并實踐的還是以道氏理論為根本的方法。方法千千萬萬只有適合自己價值觀&#xff0c;習慣&#xff0c;情緒&#xff0c;性格的方法才是好的…

ceph運維硬件規劃技巧

在規劃Ceph集群的硬件配置時&#xff0c;需要綜合考慮性能、成本、冗余、可擴展性以及特殊場景需求等因素。以下是關于Ceph硬件規劃的關鍵技巧和建議&#xff0c;涵蓋存儲設備、網絡、服務器配置、容量規劃、冗余策略等多個方面&#xff1a; 1. 硬件選型建議 存儲設備 存儲節點…

Windows主機、虛擬機Ubuntu、開發板,三者之間文件互傳

以下內容源于日常學習的整理&#xff0c;歡迎交流。 下圖是Windows主機、虛擬機Ubuntu、開發者三者之間文件互傳的方式示意圖&#xff1a; 注意&#xff0c;下面談及的所有方式&#xff0c;都要求兩者的IP地址處于同一網段&#xff0c;涉及到的軟件資源見felm。 一、Windows主…

Softmax溫度調節與注意力縮放:深度神經網絡中的平滑藝術

Softmax溫度調節與注意力縮放&#xff1a;深度神經網絡中的平滑藝術 在深度學習的精密機械中&#xff0c;有些細微的調整機制往往被視為理所當然&#xff0c;卻實際上蘊含著深刻的數學洞察和巧妙的工程智慧。今天&#xff0c;我們將探討兩個看似獨立卻本質相通的機制&#xff…

RIP路由欺騙攻擊與防御實驗詳解

一、基礎網絡配置 1. 路由器R1配置 interface GigabitEthernet0/0/0ip address 192.1.2.254 255.255.255.0 ! interface GigabitEthernet0/0/1ip address 192.1.3.254 255.255.255.0 ! router rip 1version 2network 192.1.2.0network 192.1.3.0 2. 路由器R2配置 interface…

阿里云平臺Vue項目打包發布

目錄&#xff1a; 1、vue項目打包2、通過ngixn發布vue的打包文件 1、vue項目打包 在你的vue項目下執行npm run build命令進行打包。 2、通過ngixn發布vue的打包文件 直接將打包的dist文件拷貝到nginx目錄下即可。 修改nginx.conf的配置文件的相關配置&#xff0c;如端口或者ro…

《基于Spring Boot+Vue的智慧養老系統的設計與實現》開題報告

個人主頁:@大數據蟒行探索者 一、研究背景及國內外研究現狀 1.研究背景 根據1982年老齡問題世界大會聯合國制定的標準,如果一個國家中超過65歲的老人占全國總人口的7%以上,或者超過60歲的老人占全國總人口的10%以上,那么這個國家將被定義為“老齡化社會”[1]。 隨著國…

SpringCache @Cacheable 在同一個類中調用方法,導致緩存不生效的問題及解決辦法

由于項目需要使用SpringCache來做一點緩存&#xff0c;但自己之前沒有使用過&#xff08;其實是沒有聽過&#xff09;SpringCache&#xff0c;于是&#xff0c;必須先學習之。 顯然&#xff0c;就是在同一個類中&#xff0c;MethodA 調用了 MethodB&#xff0c;那么 MethodB 上…

2025-03-20(DS復習):詳細介紹一下Databricks 的Delta Lake

Delta Lake 是 Databricks 推出的一種開源存儲層&#xff0c;它構建在現有數據湖&#xff08;如 Amazon S3、Azure Data Lake Storage、Google Cloud Storage&#xff09;之上&#xff0c;為數據湖提供了數據倉庫級別的可靠性、性能和管理功能。Delta Lake 解決了傳統數據湖的許…

在VMware上部署【Ubuntu】

鏡像下載 國內各鏡像站點均可下載Ubuntu鏡像&#xff0c;下面例舉清華網站 清華鏡像站點&#xff1a;清華大學開源軟件鏡像站 | Tsinghua Open Source Mirror 具體下載步驟如下&#xff1a; 創建虛擬機 準備&#xff1a;在其他空間大的盤中創建存儲虛擬機的目錄&#xff0c…