Cookie未在chrome或firefox中的localhost上设置

时间:2016-11-17 21:02:52

标签: java google-chrome cookies jersey

我正在使用Jersey服务器,它以下列方式返回cookie:

return Response.ok()
    .cookie(
        new NewCookie(
            "userAccessToken", userTokenDTO.getToken(), "/", "", 
            "what is this", 3600, false
        )
    ).build();

当我调用返回cookie的方法时,我在chrome中得到以下结果: Request and response headers

我甚至可以看到chrome识别出我的cookie: Cookie recognized

但由于某种原因,它未在Cookie标签中设置:

No cookie shown

我尝试将域设置为false,null,“”,在hosts文件中重命名为127.0.0.1创建一个条目。

return Response.ok()
    .cookie(
            new NewCookie(
                    "userAccessToken", userTokenDTO.getToken(), "/", "127.0.0.1",
                    "what is this", 3600, false)
    ).build();

适用于IE 11,但仍然不是Chrome或Firefox ......

我已多次尝试为127.0.0.1插入另一个主机名。在此示例中,它是text.myexample.com。它仍然无法在除IE11之外的任何其他浏览器中运行。

return Response.ok()
    .cookie(
            new NewCookie(
                    "userAccessToken", userTokenDTO.getToken(), "/", "test.myexample.com",
                    "what", 7200, false)
    ).build();

我尝试在Google Chrome控制台中执行以下操作:

document.cookie = "userAccessToken=72bebbe0-44fd-45ce-a6e1-accb72201eff;Version=1;Comment=what;Domain=test.myexample.com;Path=/;Max-Age=7200"

Chrome中服务器返回的标头中的cookie。这很好。我几乎不知道这里发生了什么。

2 个答案:

答案 0 :(得分:6)

原来问题与我正在使用的获取库有关。如果您未在请求中包含{credentials:'same-origin'},则不会设置响应cookie。

有关详细信息,请参阅https://github.com/github/fetch/issues/386

答案 1 :(得分:0)

它仅与localhost存在问题,在其他网址上运行良好,请参阅下面链接此处cookie工作但在本地则失败  http://jerseyexample-ravikant.rhcloud.com/rest/jws/say/Hi

对于localhost,您可以使用以下内容。

return Response.status(200).entity(output)

                .header("Set-Cookie", "userAccessToken=toke;lang=en-US; Path=/; Domain=localhost")
                .build(); 

enter image description here

请参阅网络标签

响应标头 内容长度:18 内容类型:text / html的 日期:2016年11月25日星期五,格林尼治标准时间10:19:15 ProcessingTime:0毫秒 服务器:Apache-狼/ 1.1 设置Cookie:userAccessToken =土气; LANG = EN-US;路径= /;域本地主机=

Network tab