在網站開發過程中,不管是前台用javascript還是在後台用伺服器端語言處理cookie,是作為一個web開發人員都必須要熟練掌握的技能。
相信大家在開發過程中都經常用到。然而如何讓前端和後端同時擷取同一份cookie我們還是需要花費上點心思。
下面我將著重介紹下這方面的見容:
1,首先多們用js向網站寫入一cookie(單索引值的比較容易,我這裡只講述下一個cookie下多索引值的處理)
為了簡單,這裡我們用jquery.cookie.js外掛程式來操作cookie,代碼如下:
$.cookie('book', 'sn=081245&title=你不能不知道的.net');
執行後我們得到的結果是:
2,接下來我們用C#代碼在後端來實現同樣的功能,代碼如下:
HttpCookie bookCookie = new HttpCookie("book"); bookCookie["sn"] = "081245"; bookCookie["title"] = HttpUtility.UrlEncode("你不能不知道的.net"); Response.AppendCookie(bookCookie);
細心的你一定發現其實裡面的cookie其實有點還不一樣,對那就是“=”在用jquery.cookie.js外掛程式處理時也被編碼啦,這樣的結果當然不符合我們的目標的。
其實這不難理解,jquery.cookie.js內部把'sn=081245&title=你不能不知道的.net'當作一個字串給編碼啦,那好,我們就去jquery.cookie.js修改下代碼,把編碼的工作交給我們自己來處理。
我們找到相應的代碼
document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
修改為
document.cookie = [name, '=', value, expires, path, domain, secure].join('');
這樣我們上面的js的代碼也要做相應的處理啦,修改後為:
function writeCookie()
{ $.cookie('book', 'sn=081245'+'&title='+encodeURIComponent('你不能不知道的.net')); }
經過這樣的處理我們保證了前端各後端寫入的cookie值是一致的,為後面的的讀取作基礎,下一篇我將繼續講述 cookie在前,後端讀取一致,並提供相應源碼下載。
本章需要注意的幾點問題:
1,對於非英文和數字等一定要編碼後再寫入。
2,js和asp.net後台對應的編碼函數為encodeURIComponent。
源碼:猛擊下載