响应中的Internet Explorer Cookie不会覆盖现有Cookie

问题描述 投票:1回答:1

我有一个客户端服务器Web应用程序,其中来自Server的每个响应都将包含一个名为CookiefruitCookie

但是,在服务器上,100次中有90次将Cookie设置为:

Cookie cookie = new Cookie("fruitCookie", "someRefreshedValue");
cookie.setPath("/");
httpResponse.addCookie(cookie);

其中Cookiejavax.servlet.http.Cookie

但是,剩下的10次,在服务器上,Cookie将从休息端点设置为:

NewCookie fruitCokie = new NewCookie("fruitCookie", "someRefreshedValue", "/", "", "", -1, false);
return Response.ok().cacheControl(ResourceCache.NO_CACHE).cookie(fruitCookie).build();

其中NewCookie是javax.ws.rs.core.NewCookie

在客户端,我使用dojo读取cookie:

getCookieValue: function (cookieName) {
        return cookie(cookieName); // cookieName is fruitCookie
},

这在Chrome工作正常。而来自http方式或Rest的最新Cookie值将在上面的函数中读取。

但是,在IE中,它不起作用。如果其余的调用发送了Cookie,我可以在开发控制台上看到新的Cookie响应,但是,上面的调用会继续返回浏览器上已有的旧值以及发送的部分请求。

我不确定它是IE浏览器导致这个或它是否与路径和域有关或者它是dojo cookie小部件的工作方式。

我该如何解决这个问题?

java rest http cookies dojo
1个回答
0
投票

显然,IE非常关心Domain。

所以改变以下

NewCookie fruitCokie = new NewCookie("fruitCookie", "someRefreshedValue", "/", "", "", -1, false);

NewCookie fruitCokie = new NewCookie("fruitCookie", "someRefreshedValue", "/", httpRequest.getServerName(), "", -1, false); 

按预期工作。

我们可以在Rest里面抓住httpRequest

@GET
@Path("myPath")
public Response myRestEndPoint(@Context HttpServletRequest httpRequest) {

注意:这不适用于“localhost”。请参考:Set-Cookie header does not set cookie in Internet Explorer

© www.soinside.com 2019 - 2024. All rights reserved.