我有兩個運行在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