如何仅为基本域创建Play 1.x cookie(无子域)

时间:2016-04-26 03:46:03

标签: java cookies playframework subdomain

我想创建一个可在我的子域中共享的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,但我认为这是因为我在一个不同于生产域的域上进行测试,这也是我设置默认值。

1 个答案:

答案 0 :(得分:1)

在Play Framework 1上,正确的方法是将application.defaultCookieDomain property设置为yourdomain.com(不带前缀点)。这样,所有cookie都将仅设置为域本身。

如果您将此设置与.yourdomain.com一起使用,那么除了域名本身之外的所有子域都会显示所有Cookie,例如www.yourdomain.comanother.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