a网站和b网站属于不同的域,比如http://a.c.com和http://b.c.com ;
a网站页面同步b网站写入的Cookie值。(所谓的Cookie共享)这个应该怎么做呢,各位大神帮帮忙吧

解决方案 »

  1.   

    通过url相互传递,2个网站互为代理,例如
    a要写b的cookie,调用b的url,通过request传递参数,b收到参数写入自己的cookie,不过,要提醒楼主,你的想法我觉得欠妥,你有没有考虑到网络上的复杂情况,一旦又断网或丢包的情况,
    你的同步方案可能无法实现,
    跨域共享,我看还是利用数据库共享来实现,N个站点都操作同一份数据,根本不需要所谓的同步,
    因为不了解你的应用场景和实际需求,说的不一定对你有用
      

  2.   

    如果要求不是那么严格.Cookie有三个属性需要注意一下:
        1. Domain  域
        2. Path       路径
        3. Expires  过期时间跨域操作需要设置域属性:
    Response.Cookies("MyCookie").Domain = "cnblogs.com"; (这里指的是泛域名)
    这样在其它二级域名下就都可以访问到了, ASP 和 ASP.NET 测试通过虚拟目录下访问:
    我在ASP端做了下测试,.NET的没试,  如果不指定Path属性, 不同虚拟目录下Cookie无法共享
    将Response.Cookies("MyCookie").Path = "/" 就可以了总的写法:
    Response.Cookies("MyCookie").Domain = "cnblogs.com";
    Response.Cookies("MyCookie").Path = "/"
    Response.Cookies("MyCookie").Expires = Now + 365;
    Response.Cookies("MyCookie")("Test") = "test";
    HttpCookie cookie = System.Web.HttpContext.Current.Request.Cookies[cookiename];
     2 if (cookie != null)
     3 {
     4                 cookie.Values.Clear();
     5                 SetUserCookieExpireTime(cookiename, -1);
     6                 cookie.Domain = _domain;
     7                 System.Web.HttpContext.Current.Response.Cookies.Set(cookie);
     8  }
     9 public static void SetUserCookieExpireTime(string key, int days)
    10 {
    11             System.Web.HttpContext.Current.Response.Cookies[key].Domain = _domain;
    12             System.Web.HttpContext.Current.Response.Cookies[key].Path = _cookiepath;
    13             System.Web.HttpContext.Current.Response.Cookies[key].Expires = DateTime.Now.AddDays(days);
    14 }
    15 
    HttpCookie cookie = System.Web.HttpContext.Current.Request.Cookies[cookiename];
     2 if (cookie != null)
     3 {
     4                 cookie.Values.Clear();
     5                 SetUserCookieExpireTime(cookiename, -1);
     6                 cookie.Domain = _domain;
     7                 System.Web.HttpContext.Current.Response.Cookies.Set(cookie);
     8  }
     9 public static void SetUserCookieExpireTime(string key, int days)
    10 {
    11             System.Web.HttpContext.Current.Response.Cookies[key].Domain = _domain;
    12             System.Web.HttpContext.Current.Response.Cookies[key].Path = _cookiepath;
    13             System.Web.HttpContext.Current.Response.Cookies[key].Expires = DateTime.Now.AddDays(days);
    14 }
    15 
      

  3.   

    楼上正解
    Domain="你的域名",不要加www
    这样你的二级域名都可以访问了
      

  4.   

    1 后台代码
    Response.Cookies("MyCookie").Domain = "c.com";2 web.config 的设置(不同项目中的web。config 必须保证 machineKey 相同才行)
        <machineKey validationKey="3FF1E929BC0534950B0920A7B59FA698BD02DFE8" decryptionKey="280450BB36319B474C996B506A95AEDF9B51211B1D2B7A77" />
        <authentication mode="Forms">
          <forms name="AuthCookie" loginUrl="~/Core/Login" domain="tiantian.com" timeout="120" protection="All" path="/"></forms>
        </authentication>
        <authorization>
          <deny users="?" />
        </authorization>
        <customErrors mode="Off" />3 在页面的 head 标签下加入脚本
    <script language="javascript" type="text/javascript">
    document.domain = "c.com";
    </script>