默认情况下,ASP.NET会将其cookie设置为使用"mydomain.com“作为它们的基础。我更喜欢他们使用"www.mydomain.com“代替,这样我就可以有其他的"sub.mydomain.com”子域是无cookie的。
我已经深入研究了Session和cookie对象,虽然我可以找到如何为单个Cookie设置域,但我看不到一种为所有会话cookie设置域的方法。
有谁有主意吗?
发布于 2010-02-24 22:43:35
创建一个ISessionIDManager,因为您只想更改Cookie域,所以我们将让默认的域完成所有工作。
这是在web.config中<system.web>
下的sessionState元素上配置的。
<sessionState sessionIDManagerType="MySessionIDManager" />
以及实现方法。
public class MySessionIDManager: SessionIDManager, ISessionIDManager
{
void ISessionIDManager.SaveSessionID( HttpContext context, string id, out bool redirected, out bool cookieAdded )
{
base.SaveSessionID( context, id, out redirected, out cookieAdded );
if (cookieAdded) {
var name = "ASP.NET_SessionId";
var cookie = context.Response.Cookies[ name ];
cookie.Domain = "example.com";
}
}
}
发布于 2010-09-23 08:34:01
我知道这是一个老问题,但是您可以使用httpCookies配置节的domain
属性而不是在代码中执行此操作吗?
<httpCookies domain="String"
httpOnlyCookies="true|false"
requireSSL="true|false" />
发布于 2010-02-24 22:10:04
会话只使用一个cookie,那么为什么不只为ASP.NET_SessionId cookie设置域呢?
https://stackoverflow.com/questions/2326521
复制相似问题