2015-05-15 33 views
6

Nie jestem w stanie zrozumieć, co się dzieje. Na jednym z env. mojej aplikacji webowej (napisanej przy użyciu ExtJS 4.0) - widzę, że żądanie logowania zakończyło się sukcesem, ale kolejne żądanie kończy się niepowodzeniem z 401.Tylko plik cookie JSESSIONID ustawiony od pierwszego żądania logowania nie jest wysyłany w kolejnych żądaniach?

Po wykopaniu więcej znalazłem w przeglądarce (F12), że nagłówek odpowiedzi pierwszego żądania ma JSESSIONID, czyli ustawić jako plik cookie, ale drugie żądanie nie wysyła go w nagłówkach żądania. Dlatego drugie żądanie tworzy nową sesję i zwraca nowy JSESSIONID.

W kodzie klienta, w którym wysyłane jest żądanie,
Ext.Ajax.request({url:'', callback..}) - NIE ma wyraźnego ustawienia JSessionId ani żadnego pliku cookie.

Dziwną częścią NIE jest WSZYSTKIE klucze cookie, tylko JSESSIONID, co oznacza, że ​​pliki cookie nie są wyłączone i ustawione przez przeglądarkę.

Dlaczego przeglądarka nie wysyła JSESSIONID? Próbowałem tego w firefox/chrome zarówno.

To samo dzieje się tylko w moim lokalnym środowisku. QA env. z webapp działa dobrze.

Odpowiedz

4

wyobraziłem go sobie .. to była kwestia http://tomcat.apache.org/migration-7.html#Session_cookie_configuration

podziękowania dla wszystkich ludzi, którzy spędzili czas czytając moje pytanie.

+0

Co dokładnie zrobiłeś? Zdarza mi się to samo z ExtJS 6: C –

+0

@AlfonsoNishikawa Wyszukaj wartość sessionCookiePath w global context.xml, może to być ustawione na niestandardową ścieżkę, w której przeglądarka zapisuje plik cookie, więc musisz upewnić się, że jego wartość jest poprawna, tj. Kontekst świadomy – akjain

0

Odpowiedź udzielona przez akjain jest poprawna. Jeśli jednak ktoś potrzebuje fragmentu kodu, tutaj jest (do dodania w web.xml):

<session-config> 
    <cookie-config> 
     <http-only>false</http-only> 
     <secure>false</secure> 
    </cookie-config> 
</session-config>