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

2022-09-03 15:03:56

我正在使用泽西岛服务器,它通过以下方式返回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

我尝试将域设置为假,空,“”,在主机文件中创建一个条目重命名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();

我试图在谷歌浏览器的控制台中执行以下操作:

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

这是 Chrome 中的服务器返回的标头中的 Cookie。这工作正常。我真的不知道这里发生了什么。


答案 1

事实证明,问题与我正在使用的获取库有关。如果未包含在请求中,则不会设置响应 Cookie。{ credentials: "same-origin" }

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


答案 2

它只是本地主机的问题,在其他网址上工作得很好,请参阅下面的链接,这里的cookie工作正常,但在本地它失败了 http://jerseyexample-ravikant.rhcloud.com/rest/jws/say/Hi

对于本地主机,您可以在下面使用。

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

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

enter image description here

请参阅“网络”选项卡

响应标头 内容-长度:18 内容-类型:文本/html 日期:星期五, 25 十一月 2016 10:19:15 GMT 处理时间:0millisecs Server:Apache-Coyote/1.1 Set-Cookie:userAccessToken=toke;lang=en-US;路径=/;域 = 本地主机

Network tab


推荐