ASP.NETがjsに書かれたクッキーを入手できない解決方法

8453 ワード

今晩javascriptを使ってルートのcookieを設定して、それからASP.NETを使ってこのcookie値を取得して、ASP.NETがJS設定のcookie値を取得できないことを発見して、本当に気がふさいで、以下はJSがCookieを書くコードです:
 Code

   
// cookies function setCookie(name,value) { document.cookie = name " = " escape (value) " ; " ; // cookie } // JS cookie setCookie( " fromUrl " ,document.referrer);

以下はASP.NET読み取りクッキーコードです.
 Code

   
/// <summary> /// Cookies /// </summary> /// <param name="str"></param> /// <returns></returns> public string GetCookies( string key) { if (System.Web.HttpContext.Current.Request.Cookies[key] != null ) { string _cstr = System.Web.HttpContext.Current.Request.Cookies[key].Value.ToString(); Encoding stre = Encoding.GetEncoding( " UTF-8 " ); return System.Web.HttpUtility.UrlDecode(_cstr, stre); } else { return string .Empty; } } // cookie string referer = GetCookies( " fromUrl " );

ここでASP.NETはUTF-8符号化を使用してJS書き込みクッキーの値を復号します.そうしないと、取ったクッキーが少し違います.
次のコードがASP.NETでjsが書いたクッキーが手に入らないということですが、どうすればいいのでしょうか.焦らないでください.次は解決方法です.
jsコードを変更し直します.次のようにします.
 Code 
[

   
// cookies function setCookie(name,value) { document.cookie = name " = " escape (value) " ;path=/ " ; // cookie }

path=/を1つ追加すればいいです.簡単です.
ここでCookieのPath属性を設定し、jsとASP.NETのCookieに対する操作が相互作用するようにクライアントとサーバ側で同時にPath="/"属性を設定しなければならない!もう一つは符号化の問題であり、ここでJSの符号化はencodeURIがASP.NETに対応するServer.URLEncodeである.
作者:dodo
原文:http://www.xueit.com/html/2009-12-06/21-984180469828.html
本文の著作権は著者と学IT網に共有され、転載を歓迎するが、著者の同意を得ずにこの声明を保留し、原文のリンクを保留しなければならない.そうしないと、法律責任を追及する権利を保留する.