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

标签 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);

当我尝试更改似乎破坏我的 cookie 的设置 application.defaultCookieDomain 时,但我认为这是因为我在与生产域不同的域上进行测试,这也是我设置的默认域。

最佳答案

在 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

或者,您可以临时更改您的主机文件以将生产域解析为您的本地主机 ip,(/etc/hosts 在 Linux 和 OSX 上):

127.0.0.1 yourdomain.com

注意:在 Play >= 2.1 上,属性更改为 session.domain,在 Play >= 2.4 上,属性再次更改为 play.http.session.domain.

关于java - 如何仅为基本域(无子域)创建 Play 1.x cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36854898/

相关文章:

javascript - jquery fadein,延迟问题

java - 多线程-奇偶数

java - 如何在 ArrayAdapter 中一次更新一个 View ?

java - 在使用 Java 启动应用程序之前检测 Play 2.2.x 模式

javascript - jQuery slideToggle 和带有许多框的 cookie

javascript - 在 sbt 中运行 npm build for play framework

JAVA SQLException错误消息有时无法解析

ruby-on-rails - 在 rails 3 和 rails 4.1 之间共享 cookie

java - 为 play 框架和 spring 定制 secureSocial(依赖注入(inject))

java - Play 2.5 和 Fluentlenium : how to turn HtmlUnit warnings off