• .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。

  • 相关阅读:
    http
    Hive与HBase的区别与联系
    超好用python库(Pathlib)
    JS中every()和some()的用法
    kubectl create 和 kubectl apply区别
    Servlet/Tomcat/ Spring 之间的关系
    Android Fragment详解
    vue路由钩子拦截器beforeEach和afterEach及页面路由变化路由监听
    Vue + Webpack 将路由文件分拆为多个文件分别管理
    VUE中常用的几种import(模块、文件)引入方式
  • 原文地址:https://www.cnblogs.com/soundcode/p/3860023.html
Copyright © 2020-2023  润新知