gpt4 book ai didi

asp.net - Safari 和 Asp.net 中 cookie 的奇怪问题

转载 作者:行者123 更新时间:2023-12-03 22:00:34 25 4
gpt4 key购买 nike

我在 Asp.net 的登录页面上有一个奇怪的问题,这个问题只发生在 Safari 上。

当用户被验证时,我从数据库中获取用户名(数据库中的字段是 UTF8)并将其保存在 cookie 中。问题是,当用户的名称带有特殊字符时,我会在未登录的情况下被重定向到我来自的页面。例如,“Moller”工作正常,用户已登录但不是“Møller”。

同样,这只发生在 Safari 中,并且名称中有特殊字符时。不起作用的行是: 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
}

最佳答案

Safari 不会在其值中使用非 ASCII 字符设置 cookie,其他浏览器在显示非 ASCII 字符方面可能无法预测。由于任何浏览器的 cookie 值中也不允许使用分号,因此我建议使用 UrlEncode/UrlDecode。

如果您只是编写 cookie 并且无法控制站点读取/显示要放入 URLDecode 的值,您还可以执行以下操作:

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

这将确保在 cookie 中设置完整的字符串,即使没有 ; Safari、Chrome、Firefox 和 IE 也能识别 html 代码。并且读取时不需要解码。

有关 cookie 规范的更长答案,请参阅: Allowed characters in cookies

关于asp.net - Safari 和 Asp.net 中 cookie 的奇怪问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5327341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com