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

Posted

技术标签:

【中文标题】cookie 未在 chrome 或 firefox 中的 localhost 上设置【英文标题】:Cookie is not set on localhost in chrome or firefox 【发布时间】:2017-04-01 14:08:19 【问题描述】:

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

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

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

我什至可以看到 chrome 已经识别了我的 cookie:

但由于某种原因,它没有在 cookie 选项卡中设置:

我尝试将域都设置为 false、null、“”,在主机文件中创建一个条目,重命名为 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。这很好用。我真的不知道这里发生了什么。

【问题讨论】:

也许这是相关的:***.com/questions/1134290/… 尝试在您的主机文件中为您的应用程序输入一个主机名,例如127.0.0.1 myapp.local 并将其用作主机名。 我已经用多个不同的名字尝试过,但没有运气。 这只是 localhost 的问题,在其他 url 上效果很好,请参见下面的链接 cookie 有效,但在本地失败 jerseyexample-ravikant.rhcloud.com/rest/jws/say/Hi 【参考方案1】:

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

更多信息,请参阅:https://github.com/github/fetch/issues/386。

【讨论】:

我最近使用了 credentials: "include" ,它为我解决了这个问题。【参考方案2】:

这只是 localhost 的问题,在其他 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(); 

查看网络标签

响应标头 内容长度:18 内容类型:文本/html 日期:格林威治标准时间 2016 年 11 月 25 日星期五 10:19:15 处理时间:0 毫秒 服务器:Apache-Coyote/1.1 Set-Cookie:userAccessToken=toke;lang=en-US;路径=/;域=本地主机

【讨论】:

我可以看到网络请求选项卡的请求设置 cookie 吗?您的示例不适用于我自己的项目。 在原始答案中添加了图像

以上是关于cookie 未在 chrome 或 firefox 中的 localhost 上设置的主要内容,如果未能解决你的问题,请参考以下文章

Chrome 未在子域之间共享 cookie

Cookie 未在 Chrome 跨域发布中发送

Chrome 未在我的 OpenID Connect 工作流程 (ASP.NET OWIN) 中保存/返回 Nonce cookie

CORS withCredentials XHR 预检未在 Firefox 中发布 Cookie

CSS 未在 Chrome 中加载

utf-8 字符未在 chrome 中显示 [关闭]