Play Framework 2.5 - 如何在不同的域中共享cookie

时间:2017-09-27 18:43:47

标签: ajax cookies playframework cors

我在尝试使用区别域中的Cookie时遇到了一些问题。在我的场景中,我有两个应用程序( app1 app2 )。基本上, app1 正在对 app2 执行 ajax请求,以便创建一个cookie(即dummyCookie)。 app2 是在Play framework 2.5 for Java上运行的应用程序。我正在创建这样的cookie:

response().setCookie(Http.Cookie.builder("dummyCookie", "9e0a6b4c-58ed-b700-0000-015ec494956").build());

我正在使用剧本 CORSFilter

package myCustomFilters.filters;

import play.filters.cors.CORSFilter;
import play.http.DefaultHttpFilters;

import javax.inject.Inject;

public class Filters extends DefaultHttpFilters {

    @Inject
    public Filters(CORSFilter corsFilter) {
        super(corsFilter);
    }
}

在我的 application.conf 中,我有这样的配置:

play.http.filters = "myCustomFilters.Filters"

play.filters {
  cors {
    pathPrefixes = ["/"]
    allowedOrigins = null
    allowedHttpMethods = ["POST, GET, PUT, DELETE, OPTIONS"]
  }
}

Chrome控制台中,在网络标签中,我可以在响应标题中看到Cookie。

enter image description here

如果我查看应用标签, Cookie会话,我无法在那里看到Cookie:

enter image description here

我做了一些调查,可能问题与场景" CORS + AJAX "有关,因为我有一个应用程序调用(通过ajax请求)另一个生成一个cookie。

伙计们,有人已经遇到过这种情况吗?

1 个答案:

答案 0 :(得分:0)

我有类似的问题。我不得不以不同的方式调整配置,以便在Chrome中实现这一功能。客户端请求也需要一些特定的更改(我使用JQuery,这种方法是必要的:Sending credentials with cross-domain posts?)。

然而,最后,我发现Safari很可能永远不会为我工作,因为Apple现在有specific rules来处理何时可以跨域发送cookie。根据您要实现的目标,这可能会让您考虑采用完全不同的方法。