2016-04-26 34 views
7

Chcę utworzyć plik cookie, który będzie dostępny dla wszystkich subdomen. Próbuję użyć metody SetCookie pokazano poniżej: https://www.playframework.com/documentation/1.4.x/api/play/mvc/Http.Response.html#setCookie-java.lang.String-java.lang.String-Jak utworzyć plik cookie Play 1.x tylko dla domeny podstawowej (brak subdomen)

Gdybym wykonaj następujące czynności tworzy plik cookie, ale domena jest „xxxx.mydomain.com” ... więc pełne domeny:

response.setCookie("loggedIn", "true"); 

Jeśli zrobię co następuje, plik cookie nigdy nie pojawi się w mojej przeglądarce. Co ja robię źle?

response.setCookie("webLoggedIn", "true", ".mydomain.com", "/", 3600, false); 

Gdy próbuję i zmienić ustawienia application.defaultCookieDomain który wydaje się złamać moje ciasteczka, ale myślę, że to dlatego, że jestem testowania w innej domenie niż domena produkcji, która jest, co mogę ustawić domyślną też.

Odpowiedz

1

W Play Framework 1 właściwą drogą jest ustawienie application.defaultCookieDomainproperty na coś podobnego do yourdomain.com (bez kropki prefiksu). W ten sposób wszystkie pliki cookie będą ustawione tylko na samą domenę.

Jeśli użyjesz tego ustawienia z .yourdomain.com, wszystkie pliki cookie będą widoczne dla wszystkich poddomen, takich jak www.yourdomain.com lub another.yourdomain.com, innych niż sama domena.

można wspomnieć, że testują na innej domenie niż produkcja, a następnie można użyć domeny domyślnej ustawienie dla środowisk programistycznych oraz specific domain for production, jak:

application.defaultCookieDomain=localhost 

# Production configuration 
%prod.application.defaultCookieDomain=yourdomain.com 

Alternatywnie, można czasowo zmienić plik hosts rozwiązać domenę produkcyjną do swojego localhost OD (/ etc/hosts na Linux i OSX):

127.0.0.1 yourdomain.com 

Uwaga: w Play> = 2,1 nieruchomość została zmieniona na session.domain i Play> = 2,4 obiekt był zmienione ponownie do play.http.session.domain.