safari cookie設(shè)置中文失敗的解決方法
最近用H5進行手機端開發(fā),由于是window操作系統(tǒng),為了方便開發(fā)和調(diào)試,直接在chrome瀏覽器上進行測試,然后在android機上進行手機端測試,當功能基本完工后,原來在android上運行正常的應(yīng)用,在IOS上運行時,出現(xiàn)很多奇怪的問題,根據(jù)排查,發(fā)現(xiàn)是由于cookie未取到值而導(dǎo)致相關(guān)信息無法獲取。
一開始以為是cookie中文亂碼的問題,后來跟蹤發(fā)現(xiàn),cookie的值壓根就沒賦值成功,網(wǎng)上查了資料,發(fā)現(xiàn)safari不允許非ASCII編碼的值,換句話說:不允許中文存儲。
為了解決這個問題,在設(shè)置cookie值的時候必須先編碼,然后取值的時候再解碼。
后端設(shè)置cookie用的asp.net,前端獲取用的Javascript,他們的編碼和解碼能一致么?當前只能試一試了:
試了幾種方法,發(fā)現(xiàn)用HttpUtility.UrlEncode()進行編碼成功:
cookie = new HttpCookie("rdname"); cookie.Value = HttpUtility.UrlEncode(user.RegisterDeptName); cookie.Expires = System.DateTime.Now.AddDays(30); context.Response.Cookies.Set(cookie);
客戶端Javascript解碼為:
var deptName = cookie('rdname'); deptName= decodeURIComponent(deptName); $("#pickerlb").val(deptName);
也就是說:Javascript中的decodeURIComponent()和C#的HttpUtility.UrlEncode()是配對的。
以上這篇safari cookie設(shè)置中文失敗的解決方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
iOS安全防護系列之字符串及系統(tǒng)函數(shù)隱藏詳解
這篇文章主要給大家介紹了關(guān)于iOS安全防護系列之字符串及系統(tǒng)函數(shù)隱藏的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2018-07-07iOS開發(fā)學習TableView展現(xiàn)一個list實例
這篇文章主要為大家介紹了iOS系列學習TableView展現(xiàn)一個list實例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-11-11