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 未在我的 OpenID Connect 工作流程 (ASP.NET OWIN) 中保存/返回 Nonce cookie