Safari和Asp.net中的cookie存在奇怪的问题
发布时间:2020-12-16 07:03:14 所属栏目:asp.Net 来源:网络整理
导读:我在 Asp.net的登录页面上有一个奇怪的问题,这个问题只发生在Safari上. 验证用户后,我从数据库中获取用户的名称(数据库中的字段为UTF8)并将其保存在cookie中.问题是,当用户的名字带有特殊字符时,我会被重定向到我来自的页面而不登录.例如“Moller”工作正常,
我在
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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- .Net Core微服务入门全纪录(八)——Docker Compose与容器
- asp.net-mvc – ASP.MVC应用程序常量,什么是最好/最优雅的方
- asp.net – 将OpenID集成到网站的注册过程中
- asp.net-mvc – 用相同的动词重载asp.net MVC控制器方法?
- asp.net – 如何显示如果绑定数据源是List Collection,则在
- Asp.net GridView使用大全(分页实现)
- Neo4j查询在特定时间运行
- asp.net调查问卷引擎
- entity-framework – 如何告诉UserManager.FindByNameAsync
- asp.net+js实现批量编码与解码的方法
推荐文章
站长推荐
- asp.net – 304未修改静态文件
- ASP.Net WebAPI与Ajax进行跨域数据交互时Cookies
- asp.net-mvc – asp.net mvc wiki
- asp.net-mvc – 在创建项目后更改View Engine
- asp.net – Page enableEventValidation =“true
- asp.net – 3层架构 – 需要一个例子
- 来自asp.net服务器端的确认框
- asp.net-mvc-2 – ASP.NET MVC 2 Area文件夹中有
- asp.net – 运行示例应用程序时出错,Uncaught Er
- asp.net – Mono apache2 =服务暂时不可用(503)
热点阅读