首页 新闻 赞助 找找看

Session在同一應用程序但不同域名時的共享問題

0
悬赏园豆:10 [已解决问题] 解决于 2008-12-18 13:38

就一行語句:
this.Response.Write(this.Session.SessionID);
用來顯示 session ID.
http://127.0.0.1/Default.aspx
http://localhost/Default.aspx
同一個IE打開這兩個地址,session ID不一樣,
有何方法讓他們共享一個session?

看了下園子里的文章,好像都沒試驗成功,請大家幫忙想想辦法。

问题补充: TO:Allie 不能傳,因為域名可能會有N個,就是cnlbogs里面的blog域名一樣。 比如:http://allie.cnblogs.com/ 不知道cnblogs有沒有實現用戶blog里免登錄呢?我看用戶blog的鏈接都是轉到主站www下面的用戶目錄去了 To:Gray Zhang 你說的沒錯,如果沒有在session里放東西的話,是不會分配空間的。 我上面的例子只是為了讓大家更明白,卻忽視了這個問題。 現在的情況是會在session里放資料。 aspx內容改為: Session["s"] = ""; Response.Write (Session.SessionID); 另外,經過我大半天的分析,我暫時的結論是這種需要沒辦法滿尺,因為127.0.0.1和localhost是兩個不同的域名,session是依靠cookie來完成的,而cookie是不可以跨域名的,最多,也只是跨子域名而已.. 不知道我說的是否正確,請大家拍磚。
zoti的主页 zoti | 初学一级 | 园豆:187
提问于:2008-12-12 08:59
< >
分享
最佳答案
0

cookie都没共享,怎么谈得上Session共享.

 

看看我的这篇文章之后,你的理解会更深一个层次。

http://www.cnblogs.com/jzywh/archive/2008/11/02/ShareSession.html

 

江大渔 | 菜鸟二级 |园豆:267 | 2008-12-12 10:26
其他回答(3)
0

跨域名? 把session传过去吧(你可以适当加密)...

Allie | 园豆:707 (小虾三级) | 2008-12-12 09:17
0

事实上这根本就是一个域,没什么好说的

SessionID不同的原因是,ASP.NET 2.0以后使用的是Cookie based Session,在这种情况下,如果没在Session中放东西的话,服务器不会为此请求的Session分配空间,因此每一次独立的请求都会生成一个新的SessionID,即便你始终访问http://localhost/Default.aspx,也应该会发现每次刷新都有不同的SessionID,当然前提是Session里没放东西

Gray Zhang | 园豆:17610 (专家六级) | 2008-12-12 09:22
0

我没有做过测试,不过楼上说得好像很有道理!

 

PS:刚才我做了一个简单的测试,楼主说的问题确实存在,楼上说得肯定也正确,Session是基于cookie保存的,与访问的域名有关,因为Cookie在浏览上的存储是按照域名保存的,博客园也在cnblogs下,所以都可以共享cookie,如果用IP访问博客园发现就不共享cookie了,所以你的127.0.0.1和localhost一个是IP一个是域名应该不共享,至于全跨域共享应该不能做,除非自己实现一个Sesson的httpmodule,基于浏览器的IP机制

GUO Xingwang | 园豆:3885 (老鸟四级) | 2008-12-12 09:35
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册