safari cookie设置中文失败

  最近用H5进行手机端开发,由于是window操作系统,为了方便开发和调试,直接在chrome浏览器上进行测试,然后在android机上进行手机端测试,当功能基本完工后,原来在android上运行正常的应用,在IOS上运行时,出现很多奇怪的问题,根据排查,发现是由于cookie未取到值而导致相关信息无法获取。

  一开始以为是cookie中文乱码的问题,后来跟踪发现,cookie的值压根就没赋值成功,网上查了资料,发现safari不允许非ASCII编码的值,换句话说:不允许中文存储。

  为了解决这个问题,在设置cookie值的时候必须先编码,然后取值的时候再解码。

后端设置cookie用的asp.net,前端获取用的Javascript,他们的编码和解码能一致么?当前只能试一试了:

试了几种方法,发现用HttpUtility.UrlEncode()进行编码成功:

1  cookie = new HttpCookie("rdname");
2  cookie.Value = HttpUtility.UrlEncode(user.RegisterDeptName);
3  cookie.Expires = System.DateTime.Now.AddDays(30);
4  context.Response.Cookies.Set(cookie);

  客户端Javascript解码为:

1 var deptName = cookie(‘rdname‘);
2 deptName= decodeURIComponent(deptName);
3 $("#pickerlb").val(deptName);

也就是说:Javascript中的decodeURIComponent()和C#的HttpUtility.UrlEncode()是配对的。

时间: 2024-10-03 17:31:44

safari cookie设置中文失败的相关文章

【转】asp.net Cookie值中文乱码问题解决方法

来源:脚本之家.百度空间.网易博客 http://www.jb51.net/article/34055.htm http://hi.baidu.com/honfei http://tianminqiang.blog.163.com/blog/#m=0 ============================================================================== cookie中怎么保存中文 在用cookie保存用户名的时候,发现cookie值不能存中文

浏览器因cookie设置HttpOnly标志引起的安全问题

1.简介 如果cookie设置了HttpOnly标志,可以在发生XSS时避免JavaScript读取cookie,这也是HttpOnly被引入的 原因.但这种方式能防住攻击者吗?HttpOnly标志可以防止cookie被"读取",那么能不能防止被"写"呢?答案是否定的,那么这里面就有文章可 做了,因为已证明有些浏览器的HttpOnly标记可以被JavaScript写入覆盖,而这种覆盖可能被攻击者利用发动session fixation攻击.本文主题就是讨论这种技术.

cookie 设置 httpOnly属性

cookie 设置 httpOnly属性防止js读取cookie. 建立filter拦截器类 CookieHttpOnlyFilter import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.serv

用Okhttp框架登录之后的Cookie设置到webView中(转)

用Okhttp框架登录之后的Cookie设置到webView中(正文) 1.webview中设置: [java] view plain copy @SuppressWarnings("deprecation") public void synCookies(Context context, String url) { CookieSyncManager.createInstance(context); CookieManager cookieManager = CookieManage

Control character in cookie value, consider BASE64 encoding your value , java操作cookie遇到中文会报错的解决方案

项目当中用到cookie保存中文,但是会报如下错误: Control character in cookie value, consider BASE64 encoding your value 大概意思是保存到cookie当中的值存在控制字符,无法保存.但实际上数据是不存在这种问题的.再看后面的那句话,好像是将要保存的值进行了base64编码,可能是因为中文在编码时出现乱码导致一些控制字符的出现.看来setCookie方法不支持保存中文(GBK)编码的样子. 解决方案:将要保存的值进行URLE

mac系统下为emacs设置中文字体,解决乱码问题

最近换了个系统,现在用mac系统. 当打开emacs后,中文支持的不是很好.有的地方能显示,在.el文件的注释里显示为口口口口口口口口这样的框,如下图所示 找了半天,是因为中文字体的问题,只要设置好中文字体就行了. 以前在Linux下中文就支持的很好,不用配制中文字体就能显示. 配制代码如下(将其放到.emacs文件或init.el里就OK): ;; -------------------------------------------------------------------------

树莓派设置中文

安装中文字体: sudo apt-get install ttf-wqy-zenhei 安装中文输入法: sudo apt-get install scim-pinyin 系统配置: sudo raspi-config 选择 Internationalisation Options ->  Change Locale 选择 zh_CN.UTF-8  按空格键确定,tab键将光标转到 <Ok> 确定 Default locale for the system environment: -&

cookie存中文

1 cookie存取: 2 存: Cookie cookie = new Cookie("title",URLEncoder.encode("标题","utf-8")) 3 cookie.setMaxAge(365 * 24 * 60 * 60); 4 response.addCookie(cookie); 5 取: Cookie[] cookies = request.getCookies(); 6 Cookie sCookie = null;

cookie设置httponly属性防护XSS攻击

攻击者利用XSS漏洞获取cookie或者session劫持,如果这里面包含了大量敏感信息(身份信息,管理员信息)等,攻击这里用获取的COOKIE登陆账号,并进行非法操作. COOKIE设置httponly属性可以化解XSS漏洞攻击带来的窃取cookie的危害. PHP中COOKIE设置方法: <?php setcookie("xsstest", "xsstest", time()+3600, "/", "", false