两个网站的Cookie共享

lovezhenz 2010-10-14 02:25:17
a网站和b网站属于不同的域,比如http://a.c.com和http://b.c.com ;
a网站页面同步b网站写入的Cookie值。(所谓的Cookie共享)

这个应该怎么做呢,各位大神帮帮忙吧
...全文
367 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
草青工作室 2012-03-12
  • 打赏
  • 举报
回复
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>
pxh360395296 2010-10-14
  • 打赏
  • 举报
回复
楼上正解
Domain="你的域名",不要加www
这样你的二级域名都可以访问了
kkbac 2010-10-14
  • 打赏
  • 举报
回复
如果要求不是那么严格.

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


l576981437 2010-10-14
  • 打赏
  • 举报
回复
互相传值吧
kkbac 2010-10-14
  • 打赏
  • 举报
回复
如果需求严谨的话,还是如楼上所说用数据库来同步.
加油馒头 2010-10-14
  • 打赏
  • 举报
回复
如果仅仅是两个网站 共享数据


可以采用公用库,公用文件的方式
加油馒头 2010-10-14
  • 打赏
  • 举报
回复
跨域共享,我看还是利用数据库共享来实现,N个站点都操作同一份数据,根本不需要所谓的同步,


这句话 很有道理
缪军 2010-10-14
  • 打赏
  • 举报
回复
通过url相互传递,2个网站互为代理,例如
a要写b的cookie,调用b的url,通过request传递参数,b收到参数写入自己的cookie,

不过,要提醒楼主,你的想法我觉得欠妥,你有没有考虑到网络上的复杂情况,一旦又断网或丢包的情况,
你的同步方案可能无法实现,
跨域共享,我看还是利用数据库共享来实现,N个站点都操作同一份数据,根本不需要所谓的同步,
因为不了解你的应用场景和实际需求,说的不一定对你有用

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧