zoukankan      html  css  js  c++  java
  • 同一IP下多端口网站共享cookie的问题

    以前开开发过程中使用cookie比较随便,后来发现同一个cookie在不同端口的站点下面其实是共有的,给开发造成一定的麻烦。现在我的cookie访问类已经修改过来了。所以说,有时候网上的东西还是不能拿过来就用啊,具体问题还得具体分析

      1 using System;
      2 using System.Web;
      3 namespace Common.Web
      4 {
      5     /// <summary>
      6     /// 操作Cookie
      7     /// </summary>
      8     public class Cookie
      9     {
     10 
     11         /// <summary>
     12         /// 创建Cookies
     13         /// </summary>
     14         /// <param name="strName">Cookie 主键</param>
     15         /// <param name="strValue">Cookie 键值</param>
     16         /// <param name="strDay">Cookie 天数(单位:30分钟)</param>
     17         /// <code>Cookie ck = new Cookie();</code>
     18         /// <code>ck.setCookie("主键","键值","天数");</code>
     19         public bool SetCookie(string strName, string strValue, int strDay)
     20         {
     21             try
     22             {
     23                 DelCookie(strName);
     24                 string port = HttpContext.Current.Request.Url.Port.ToString();
     25                 strName = strName + "_" + port;
     26                 HttpCookie Cookie = new HttpCookie(strName);
     27                 Cookie.Expires = DateTime.Now.AddDays(strDay / 48.0);
     28                 //  Cookie.Expires = DateTime.Now.AddDays(strDay / 1.0);
     29                 Cookie.Value = strValue;
     30                 System.Web.HttpContext.Current.Response.Cookies.Add(Cookie);
     31                 return true;
     32             }
     33             catch
     34             {
     35                 //     Common.LogManager.GetInstance().Log("设置COOKIE失败");
     36                 return false;
     37             }
     38         }
     39 
     40         /// <summary>
     41         /// 读取Cookies
     42         /// </summary>
     43         /// <param name="strName">Cookie 主键</param>
     44         /// <code>Cookie ck = new Cookie();</code>
     45         /// <code>ck.getCookie("主键");</code>
     46         public string GetCookie(string strName)
     47         {
     48             string port = HttpContext.Current.Request.Url.Port.ToString();
     49             strName = strName + "_" + port;
     50             HttpCookie Cookie = System.Web.HttpContext.Current.Request.Cookies[strName];
     51             if (Cookie != null)
     52             {
     53                 if (Cookie.Value != null)
     54                 {
     55                     return Cookie.Value.ToString();
     56                 }
     57                 else
     58                 {
     59                     return null;
     60                 }
     61             }
     62             else
     63             {
     64                 return null;
     65             }
     66         }
     67 
     68         /// <summary>
     69         /// 删除Cookies
     70         /// </summary>
     71         /// <param name="strName">Cookie 主键</param>
     72         /// <code>Cookie ck = new Cookie();</code>
     73         /// <code>ck.delCookie("主键");</code>
     74         public bool DelCookie(string strName)
     75         {
     76             try
     77             {
     78                 string port = HttpContext.Current.Request.Url.Port.ToString();
     79                 strName = strName + "_" + port;
     80                 HttpCookie Cookie = new HttpCookie(strName);
     81                 Cookie.Expires = DateTime.Now.AddDays(-100);
     82                 Cookie.Value = null;
     83                 System.Web.HttpContext.Current.Response.Cookies.Add(Cookie);
     84                 return true;
     85             }
     86             catch
     87             {
     88                 return false;
     89             }
     90         }
     91         /// <summary>
     92         /// 得到网站的Cookie
     93         /// </summary>
     94         /// <param name="url">网站域名 如http://www.xxx.com</param>
     95         /// <param name="cookie"></param>
     96         /// <returns></returns>
     97         public System.Net.CookieCollection GetCookieCollection(string url, System.Net.CookieContainer cookie)
     98         {
     99             Uri uri = new Uri(url);
    100             System.Net.CookieCollection ccll = cookie.GetCookies(uri);
    101             return ccll;
    102         }
    103 
    104     }
    105 }
     1 function getcookie(varName) {
     2     var port = location.port; //浏览器端口
     3     if (port == "") {
     4         port = "80";
     5     }
     6     var cookieStr = document.cookie;
     7     if (cookieStr == "") {
     8         return "0";
     9     }
    10     var cookieValue = cookieStr.split(";");
    11     //alert(cookieValue);
    12     var startPos = -1;
    13     var endPos = -1;
    14     for (var i = 0; i < cookieValue.length; i++) {
    15         //startPos = cookieValue[i].indexOf(varName);
    16         var key = cookieValue[i].substring(0, cookieValue[i].indexOf("="))
    17         //alert(("查询到的KEY " + key).toString().length);
    18         //alert(("希望查询到的KEY " + varName + "_" + port).toString().length);
    19         if (key.replace(" ", "") == (varName + "_" + port).replace(" ", "")) {
    20             startPos = cookieValue[i].indexOf("=")+1
    21             var css = cookieValue[i].substring(startPos);
    22             //alert(varName + ":" + port + "=" + css);
    23                 //alert("查询 "+varName+" 得到 "+css);
    24             return css;
    25         }
    26     }
    27 
    28     return "0";
    29 }
    30 function savecookie(key, val) {
    31     var port = location.port;
    32     if (port == "") {
    33         port = "80";
    34     }
    35     var the_date = new Date("December 31, 2020");
    36     var expiresDate = the_date.toGMTString();
    37     document.cookie = key + "_" + port + "=" + escape(val) + "; expires=" + expiresDate;
    38 }
    39 function delCookie(name) {
    40     var port = location.port;
    41     if (port == "") {
    42         port = "80";
    43     }
    44     var exp = new Date();
    45     exp.setTime(exp.getTime() - 1000);
    46     var cval = getcookie(name);
    47     document.cookie = name + "_" + port + "=" + escape(cval) + ";expires=" + exp.toGMTString();
    48 }
    49 function getPort(str) {
    50     s = str.split('_');
    51     return s[1];
    52 }
    --------------------------------------------------------------------------------------------------------------------------------------------
    顺势而为
  • 相关阅读:
    font-weight(字体粗细)属性
    Node.js入门(三)
    js难点问题
    Node.js入门(二)
    Node.js入门(一)
    Reactjs的Controller View模式
    智能社的邀请码
    react native 学习资料汇总
    jquery操作select
    分享
  • 原文地址:https://www.cnblogs.com/zhuzhenyu/p/2611958.html
Copyright © 2011-2022 走看看