zoukankan      html  css  js  c++  java
  • .NET获取不到js写的cookie解决方法

    今晚使用javascript设置一个来路的cookie,之后使用ASP.NET获取这个cookie值,发现ASP.NET获取不到JS设置的cookie值,真郁闷中,以下是JS写Cookie的代码:
      
      Code
      
      //写cookies
      
      functionsetCookie(name,value)
      
      {
      
      document.cookie=name"="escape(value)";";//设置的cookie关闭浏览即失效
      
      }
      
      //JS设置来路写入到cookie
      
      setCookie("fromUrl",document.referrer);
      
      以下是ASP.NET读取cookie代码:
      
      Code
      
      ///<summary>
      
      ///读取Cookies
      
      ///</summary>
      
      ///<paramname="str"></param>
      
      ///<returns></returns>
      
      publicstringGetCookies(stringkey)
      
      {
      
      if(System.Web.HttpContext.Current.Request.Cookies[key]!=null)
      
      {
      
      string_cstr=System.Web.HttpContext.Current.Request.Cookies[key].Value.ToString();
      
      Encodingstre=Encoding.GetEncoding("UTF-8");
      
      returnSystem.Web.HttpUtility.UrlDecode(_cstr,stre);
      
      }
      
      else
      
      {
      
      returnstring.Empty;
      
      }
      
      }
      
      //获取cookie
      
      stringreferer=GetCookies("fromUrl");
      
      在这里ASP.NET使用UTF-8编码来解码JS写cookie的值,要不然取到的cookie会有些不同。
      
      就是以下代码出现ASP.NET居然获取不到js写的cookie,那怎么办呢?别急,下面是解决方法:
      
      重新改一下js代码,如下:
      
      Code[
      
      //写cookies
      
      functionsetCookie(name,value)
      
      {
      
      document.cookie=name"="escape(value)";path=/";//设置的cookie关闭浏览即失效
      
      }
      
      加多了一个path=/,就行了。就这么简单。
      
      这里设置了Cookie的Path属性,必须在客户端和服务器端同时设置Path="/"属性,才能js和ASP.NET对Cookie的操作才能相互作用!另外一个是编码的问题,这里JS中的编码为encodeURI对应ASP.NET的Server.URLEncode。

  • 相关阅读:
    统计学方法(t-检验)
    generate的使用verilog
    FPGA的存储方式大全
    matlab函数
    三年后的我-记于2018
    labview学习——用户界面模式
    labview线程相关
    labview状态机
    JS~字符串长度判断,超出进行自动截取(支持中文)
    AngulaJs -- 隔离作用域
  • 原文地址:https://www.cnblogs.com/soundcode/p/3860023.html
Copyright © 2011-2022 走看看