2011-03-16 27 views
5

Asp.net'deki giriş sayfamda garip bir sorun var, bu sorun sadece Safari'de oluyor.Safari ve Asp.net çerezleri ile garip bir sorun

Kullanıcı doğrulandığında, kullanıcının adını veritabanından alır (veritabanındaki alan UTF8'dir) ve bir tanımlama bilgisine kaydeder. Sorun, kullanıcı özel karakterler içeren bir isme sahip olduğunda, giriş yapmadan geldiğim sayfaya yönlendirilirim. Örneğin, "Moller" iyi çalışıyor ve kullanıcı giriş yapıyor, ancak "Møller" değil.

Yine bu yalnızca Safari'de ve isimde özel karakterler olduğunda gerçekleşiyor. Çalışmayan satır: Response.Cookies ["userInfo"] ["name"] = getNameFromUserid (userid);

string userid = validUserWithEmail(TextBoxEmail.Text, TextBoxPassword.Text); 
if (userid != null) { 
    //VALID USER 
    Response.Cookies["userInfo"].Expires = DateTime.Now.AddDays(30); 
    Response.Cookies["userInfo"]["name"] = getNameFromUserid(userid); 

    FormsAuthentication.RedirectFromLoginPage(userid, CheckBoxPersistCookie.Checked); 
} 
else 
{ 
    //NOT A VALID USER SHOW A MESSAGE FOR THE USER OR SOMETHING 
} 
+0

Herhangi bir fikir? – Martin

+0

Safari, bir Windows veya Mac/iOS sürümü mü? Asp.net uygulamamla aynı sorunu yaşıyorum, ancak sadece Safari'nin Mac sürümünde. –

cevap

6

Safari onlar ASCII olmayan karakterleri görüntülemek nasıl öngörülemeyen olabilir onların değeri ve diğer tarayıcılarda ASCII olmayan karakterler içeren çerezleri ayarlamaya olmaz:

Bu benim kodudur. Yarı-kolonun herhangi bir tarayıcı için çerez değerlerine de izin verilmediğinden, UrlEncode/UrlDecode kullanmanızı öneririz.

sizin de böyle bir şey yapabileceği urldecode koymak için değeri gösteren/sadece çerez yazıyoruz ve site okuma üzerinde kontrol yoksa:

ckCookie.Value = (Server.HtmlEncode(strSpecialCharacters)).Replace(";",""); 

Bu tam dize sağlayacaktır çerezde ayarlanır ve Safari, Chrome, Firefox ve IE hala olmadan html kodlarını tanıyacaktır; ve okunurken kod çözme gerektirmez. çerez özellikleri üzerinde daha uzun bir yanıt için

bkz: bu konuda Allowed characters in cookies

+0

Açıkladığınız için teşekkürler! Ama sorun şu anda kodlanmış benim çerezde "Müller" kullanmaya çalışırken bir asp.net hata mesajı "İstemci potansiyel olarak tehlikeli Request.Cookies değeri tespit edildi" yerine: "M & # 252 ". Bu sorunu nasıl çözebilirim? – Martin

+3

Çözüm yerine UrlEncode kullanmak için görünüyor: http://madskristensen.net/post/Cookies-and-Unicode-characters.aspx – Martin

+0

Teşekkürler dostum! Son tarihimi kurtardın! LoL! –

İlgili konular