我想创建一个可在我的子域中共享的cookie。我正在尝试使用此处显示的setCookie方法:https://www.playframework.com/documentation/1.4.x/api/play/mvc/Http.Response.html#setCookie-java.lang.String-java.lang.String-
如果我执行以下操作,则会创建一个cookie,但域名为“xxxx.mydomain.com”...所以完整域名
response.setCookie("loggedIn", "true");
如果我执行以下操作,cookie将永远不会显示在浏览器中。我做错了什么?
response.setCookie("webLoggedIn", "true", ".mydomain.com", "/", 3600, false);
当我尝试更改设置application.defaultCookieDomain时,似乎打破了我的cookie,但我认为这是因为我在一个不同于生产域的域上进行测试,这也是我设置默认值。
答案 0 :(得分:1)
在Play Framework 1上,正确的方法是将application.defaultCookieDomain
property设置为yourdomain.com
(不带前缀点)。这样,所有cookie都将仅设置为域本身。
如果您将此设置与.yourdomain.com
一起使用,那么除了域名本身之外的所有子域都会显示所有Cookie,例如www.yourdomain.com
或another.yourdomain.com
。
您提到您在不同的域上进行测试,然后您可以使用开发环境的默认域设置和specific domain for production,例如:
application.defaultCookieDomain=localhost
# Production configuration
%prod.application.defaultCookieDomain=yourdomain.com
或者,您可以临时更改hosts文件以将生产域解析为localhost ip(Linux和OSX上的/ etc / hosts):
127.0.0.1 yourdomain.com
注意:在Play> = 2.1上,该属性已更改为session.domain
,在Play> = 2.4上,该属性又被更改为play.http.session.domain
。