base64 應(yīng)用一例

剛才做公司 passport 項目的時候,登錄界面,有個重置密碼的功能痢虹,跳轉(zhuǎn)到重置密碼頁,而重置密碼后兰绣,還要調(diào)回原有的登錄頁

當(dāng)然可以用 history.back世分,但為了保證 Url 可復(fù)制,使用代碼

登錄頁的 url 大致是這樣的:

http://passport.xxx.com/login?retUrl=http%3A%2F%2Fwww.xxx.com%2Fauth%2Ffinish%3Fr%3Dhttp%253A%252F%252Fnews.xxx.com%252Fa%252F272.html

可以看到參數(shù) retUrl 的值非常復(fù)雜缀辩,它其實是:

encodeURIComponent('http://www.xxx.com/auth/finish?r=' + encodeURIComponent('http://news.xxx.com/a/272.html'))

的結(jié)果臭埋,本來已經(jīng)過兩次 encodeURIComponent 調(diào)用了,如果再來一次臀玄,應(yīng)該也能達(dá)到目的瓢阴,但最后出了一點小問題,可能是多次 encodeURIComponent 導(dǎo)致的

不用糾結(jié)健无,換一種思路荣恐,將它轉(zhuǎn)換成 base64,傳給重置密碼頁累贤,然后在重置密碼頁解析這個 base64

想法很 nice叠穆,但我一查,原來 base64 編碼臼膏,包含以下字符:

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=

看看最后的三個字符 +/=硼被,都是 Url 敏感字符,所以:

base64 字符串不可直接作為 Url 參數(shù)值渗磅,仍需 encodeURIComponent

所以嚷硫,最終的方案改為:

// 在登錄頁編碼
const retUrl = encodeURIComponent(btoa(location.href))
const resetPwdUrl = `/auth/resetPwd?retUrl=${retUrl}`

// 在重置密碼頁检访,獲取 retUrl
// 假設(shè) rawRetUrl 為參數(shù) retUrl 的原始值
const retUrl = rawRetUrl ? atob(decodeURIComponent(rawRetUrl)) : '/'

btoa 用于將原始數(shù)據(jù)編碼成 base64 字符串,atob 用于解碼
瀏覽器支持情況:IE10+仔掸、所有現(xiàn)代瀏覽器

整篇完脆贵。歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明出處:
簡書作者:lip2up
微信公眾號:前端大牛

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末起暮,一起剝皮案震驚了整個濱河市卖氨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌负懦,老刑警劉巖双泪,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異密似,居然都是意外死亡焙矛,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門残腌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來村斟,“玉大人,你說我怎么就攤上這事抛猫◇№铮” “怎么了?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵闺金,是天一觀的道長逾滥。 經(jīng)常有香客問我,道長败匹,這世上最難降的妖魔是什么寨昙? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮掀亩,結(jié)果婚禮上舔哪,老公的妹妹穿的比我還像新娘。我一直安慰自己槽棍,他們只是感情好捉蚤,可當(dāng)我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著炼七,像睡著了一般缆巧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上豌拙,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天陕悬,我揣著相機與錄音,去河邊找鬼姆蘸。 笑死墩莫,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的逞敷。 我是一名探鬼主播狂秦,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼推捐!你這毒婦竟也來了裂问?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤牛柒,失蹤者是張志新(化名)和其女友劉穎堪簿,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體皮壁,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡椭更,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蛾魄。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片虑瀑。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖滴须,靈堂內(nèi)的尸體忽然破棺而出舌狗,到底是詐尸還是另有隱情,我是刑警寧澤扔水,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布痛侍,位于F島的核電站,受9級特大地震影響魔市,放射性物質(zhì)發(fā)生泄漏主届。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一待德、第九天 我趴在偏房一處隱蔽的房頂上張望岂膳。 院中可真熱鬧,春花似錦磅网、人聲如沸谈截。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽簸喂。三九已至,卻和暖如春燎潮,著一層夾襖步出監(jiān)牢的瞬間喻鳄,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工确封, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留除呵,地道東北人再菊。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像颜曾,于是被迫代替她去往敵國和親纠拔。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理泛豪,服務(wù)發(fā)現(xiàn)稠诲,斷路器,智...
    卡卡羅2017閱讀 134,672評論 18 139
  • 22年12月更新:個人網(wǎng)站關(guān)停诡曙,如果仍舊對舊教程有興趣參考 Github 的markdown內(nèi)容[https://...
    tangyefei閱讀 35,184評論 22 257
  • 點擊查看原文 Web SDK 開發(fā)手冊 SDK 概述 網(wǎng)易云信 SDK 為 Web 應(yīng)用提供一個完善的 IM 系統(tǒng)...
    layjoy閱讀 13,769評論 0 15
  • Base64 是一種基于 64 個可打印字符來表示二進制數(shù)據(jù)的表示方法臀叙。 1.base64 算法的由來 base6...
    沮溺閱讀 1,624評論 1 1
  • 鄒游的河道 眼前的綠 成了駐足滿野的生活 而河里的蘆葦蕩成了我此時此刻的臆想 一片毛絨絨的黃色夢 搖搖晃晃的醒了
    o運鵬閱讀 112評論 0 0