我有两个运行在IIS Express中的ASP.NET网站,其中包含不同端口的localhost
。我正在使用FormsAuthentication
来记住通过cookie登录。但是,当我登录或注销一个网站时,它会影响其他网站,因此它们似乎共享相同的Cookie。ASP.NET Cookie在两个站点之间错误地共享
这是一个常见问题,还是我可以调整一些东西来避免这种情况?
我有两个运行在IIS Express中的ASP.NET网站,其中包含不同端口的localhost
。我正在使用FormsAuthentication
来记住通过cookie登录。但是,当我登录或注销一个网站时,它会影响其他网站,因此它们似乎共享相同的Cookie。ASP.NET Cookie在两个站点之间错误地共享
这是一个常见问题,还是我可以调整一些东西来避免这种情况?
这很可能是由具有相同cookie名称的网站引起的。
您可以在web.config文件中进行调整:
<authentication mode="Forms"> <forms name=".CookieName" loginUrl="LoginPage.aspx" /> </authentication>
这是一个常见问题,因为cookie被分配给主机名。您应该为您的网站赋予AUTH Cookie不同的名称。看看如何做到这一点:Can I change the FormsAuthentication cookie name?。
是同一个域下的两个网站?您可能需要指定Cookie路径。
请注意,更改cookie名称没有阻止该cookie被发送到错误的应用程序。
http cookie不是与给定端口隔离的。 Are HTTP cookies port specific?
浏览器将基于域发送cookie,不考虑端口。
由于历史原因,cookie包含一些安全性和 隐私不足之处。例如,服务器可以指示某个给定的Cookie用于“安全”连接,但安全属性 不存在活动网络 攻击者的情况下提供的完整性。同样,即使Web浏览器使用通常的“同源策略” 隔离通过不同端口检索到的内容,该主机端口上的所有主机端口也会共享给定主机的Cookie。
如果您想将该cookie限制到同一个域中的应用程序,则需要将cookie设置为特定于虚拟目录。像cookie.domain ='yourdomain/appRootUrl /'。
cookie不会与给定端口隔离。参见[http cookie特定端口](http://stackoverflow.com/questions/1612177/are-http-cookies-port-specific) – cobolstinks