在Chrome或Firefox中,本地主机上未设置Cookie

15

我正在使用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。这个很好用。但我真的不知道这里发生了什么。


1
也许这个与之相关:https://dev59.com/anNA5IYBdhLWcg3wAItP 在你的hosts文件中为你的应用程序设置一个主机名,例如127.0.0.1 myapp.local,然后将其用作主机名。 - Alexander Arutinyants
2
我已经尝试了多个不同的名称,但都没有成功。 - Amnestic
这只是本地主机的问题,在其他URL上运行良好,请参见下面的链接,这里Cookie有效,但在本地失败:http://jerseyexample-ravikant.rhcloud.com/rest/jws/say/Hi - gladiator
2个回答

13

问题与我使用的 fetch 库有关。如果您在请求中不包括 { credentials: "same-origin" },则响应 cookie 将不会被设置。

了解更多信息,请参见:https://github.com/github/fetch/issues/386


1
我最近使用了{ credentials: "include" },并且这为我解决了这个问题。 - Derek Lewis

0

这是一个仅限于本地主机的问题,在其他URL上运行良好,请参见下面的链接,此处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

查看网络选项卡

响应头 Content-Length:18 Content-Type:text/html Date:Fri, 25 Nov 2016 10:19:15 GMT ProcessingTime:0 millisecs Server:Apache-Coyote/1.1 Set-Cookie:userAccessToken=toke;lang=en-US; Path=/; Domain=localhost

Network tab


我能看到设置cookie的网络请求选项卡吗?你的示例在我的项目中无法工作。 - Amnestic
在原始答案中添加了图片。 - gladiator

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接