vue.js客服系統實時聊天項目開發(十七)解決url get傳參後進行base64解密問題

有些參數需要在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(''));
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章