2011-09-08 64 views
2

有没有办法指定HttpCookie的端口?Asp.net HttpCookie指定端口

我有一个网站,可在sub.example.com,需要部署在sub.example.com:81和sub.example.com:82.(所以同一个域,不同的端口 - 使用的Apache2和单声道)

认证所使用的cookie指定域和路径进行:

sub.example.com (domain = "sub.example.com" path = "/") 
sub.example.com:81 (domain = "sub.example.com:81" path = "/") 
sub.example.com:82 (domain = "sub.example.com:82" path = "/") 
// seems that the port in domain is not used... 

所有sub.example.com工作正常,但sub.example.com登录时,页面在sub.example.com:81也收到sub.example.com设置的'认证'cookie。

所以我想能够指定一个httpCookie的端口来限制这个Cookie可以发送到的端口。或者,也许有一种解决方法来模拟此...

回答

1

创建cookie时,可以将Cookie的Port-property设置为正确的端口。

更多信息,可以发现:http://msdn.microsoft.com/en-us/library/system.net.cookie.port%28VS.80%29.aspx

+2

确实,你可以指定一个System.Net.Cookie(http://msdn.microsoft.com/en-us/library/system.net.cookie.aspx)的端口......但问题涉及到System.Web.HttpCookie(http://msdn.microsoft.com/en-us/library/zw640823(v=VS.80).aspx) –

+0

啊,我误读了。如果您未设置域+端口,并且让Cookie设置域本身,会发生什么情况。那样有用吗? – Pbirkoff

+1

找到了一个简单/快速的解决方案:该网站的所有实例都有不同的“身份验证”cookie名称:cookie的名称和端口号。例如:cookieName80,cookieName81 ...等等......即使cookies将被发送到所有实例,服务器也只会查找相关的cookie,并且不会阻止认证过程。 –

1

只是为了清楚起见 - 没有,它使用的HttpCookie时是不可能的。