Mamy wiele kopii aplikacji internetowej wdrożonej na wielu ścieżkach w tej samej domenie.
przykład:Program Internet Explorer wysyła niewłaściwy plik cookie, gdy ścieżki nakładają się na siebie.
Każdy przykład utrzymuje zestaw ciasteczek każdy określa jego path
jak "/" + .getWebDirRoot()
- tj /abc
, /xyz
, /abc123
Podczas wykonywania następujący przepływ:
- Logowanie do http://mydomain.com/abc
- wykonać pewną aktywność
- Wyloguj
- Logowanie do http://mydomain.com/abc123
- wykonać pewną aktywność < - Brak
Ostatni krok nie udaje się s komunikat IE
wysłał nam nieprawidłowy plik cookie - wysyła go za http://mydomain.com/abc zamiast jednego za http://mydomain.com/abc123
Nie dotyczy to FireFox. (I nie próbowałem żadnej innej przeglądarki). To jest znane zachowanie IE
(testowałem IE9
i IE8
)?
Czy istnieje sposób na pokonanie tego problemu (w sposób programistyczny)?
Uwaga: Właśnie w celu wyjaśnienia, to nie zdarza się podczas przełączania z http://mydomain.com/abc do http://mydomain.com/xyz - zachowanie jest ściśle ograniczona do przepływów gdzie currentUrl.startswith(urlAssociatedWithCookie) == true
Sprawdziłem zachowanie używając Skrzypek - wyraźnie widać HTTP wniosek o przesłanie abc123
z wartością pliku cookie należącego do abc
.
Sprawdziłem również pliki cookie w FireFox i są one zgodne z oczekiwaniami - jeden utworzony na ścieżkę.
Dzięki za szczegółowego dochodzenia. Wiedząc o tym zapewne zaoszczędzę wiele dramatów w przyszłości. –
Stało się to samo dla mnie (i podjąłem ten sam wniosek). Dzięki za zaoszczędzenie mi czasu, aby znaleźć specyfikację i opis błędu w IE! – helios
Dla wszystkich wdrażających na serwerze Apache Tomcat: Począwszy od Tomcat7 Tomcat automatycznie dodaje ukośny ukośnik ("/") do ścieżki pliku cookie, aby uniknąć tego problemu. Możesz wyłączyć tę funkcję w swoim 'context.xml', ustawiając' sessionCookiePathUsesTrailingSlash = false' (zobacz http://tomcat.apache.org/tomcat-7.0-doc/config/context.html) –