• 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()是配对的。

  • 相关阅读:
    加密解密
    论事件驱动与异步IO
    linux 基础命令
    libgcc_s_dw2-1.dll 缺失问题解决
    TightVNC 远程桌面
    配置机器学习开发环境(eclipse + anaconda2)
    Caffe 执行python实例并可视化
    Caffe windows编译找不到python27_d.lib问题解决
    PHP 上传文件名中带中文的文件失败问题
    Windows 搭建PHP开发环境
  • 原文地址:https://www.cnblogs.com/isaboy/p/safari_cookie_ascii_null.html
Copyright © 2020-2023  润新知