1.繼上一篇隨筆,鏈接點我,解決手機端cookie的問題。
2.上次用cookie+redis實現了session,並且手機瀏覽器可能回傳cookies有問題,所以最后用js取出cookie跟在請求的url后面。
3.但是今天發現了新的問題,js取cookie存的sessionId為空,情況如下:
(1)QQ瀏覽器能獲取某些cookie,另一些cookie獲取為空,猜測是后台Response SetCookie的時候,手機端瀏覽器沒能良好的接受。
(2)UC瀏覽器測試正常。
(3)Safari情況和QQ瀏覽器相同。
(4)PC端正常。
4.這樣的情況下,我最終確定問題是, 后台對手機瀏覽器setCookie時出現問題。
5.解決辦法是,將需要存在cookie中的值放到json返回結果中一並返回。
6.在js中使用setCookie的方法來向瀏覽器設置cookie.
7.SetCookie方法如下。
function setCookie(name,value) { var Days = 30; var exp = new Date(); exp.setTime(exp.getTime() + Days*24*60*60*1000); document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString(); }