我正在使用Jersey服务器,它以下列方式返回cookie:
return Response.ok()
.cookie(
new NewCookie(
"userAccessToken", userTokenDTO.getToken(), "/", "",
"what is this", 3600, false
)
).build();
当我调用返回cookie的方法时,我在chrome中得到以下结果:
但由于某种原因,它未在Cookie标签中设置:
我尝试将域设置为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。这很好。我几乎不知道这里发生了什么。
答案 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();
请参阅网络标签
响应标头 内容长度:18 内容类型:text / html的 日期:2016年11月25日星期五,格林尼治标准时间10:19:15 ProcessingTime:0毫秒 服务器:Apache-狼/ 1.1 设置Cookie:userAccessToken =土气; LANG = EN-US;路径= /;域本地主机=