我正在使用 Rest 响应在客户端设置 cookie。但是当我在 Chrome 中打开“资源”时,我看不到设置的 cookie。但有趣的是,当我转到 chrome 设置并检查所有 cookie 时,我找到了我正在设置的 cookie。同样,w3schools 的 getCookie() javascript 函数(或处理所有可能性的更好版本)什么也没给我。我试过firefox,同样的事情发生了。当我看到所有 cookie 时,我看到了我的 cookie,但是 JS 函数 getCookie() 没有返回任何东西。我认为 cookie 设置不正确。
这是我的 JAX-RS 响应:
Cookie c1 = 新 Cookie(Constants.SESSION_TOKEN, 响应
.getSessionToken().getValue());
Cookie c2 = 新 Cookie(Constants.USER_IDENTIFIER,
response.getUserIdentifier());
NewCookie cookie1 = 新的NewCookie(c1);
NewCookie cookie2 = 新的 NewCookie(c2);
返回 Response.ok(jsonResponse, MediaType.APPLICATION_JSON)
.cookie(cookie1,cookie2).build();
这是我的 JS getCookie() 函数
函数 getCookies() {
var c = document.cookie, v = 0, cookies = {};
if (document.cookie.match(/^\s*\$Version=(?:"1"|1);\s*(.*)/)) {
c = 正则表达式.$1;
v = 1;
}
如果(v === 0){
C
。分裂(/[,;]/)
。地图(
功能(饼干){
var parts = cookie.split(/=/, 2), name = decodeURIComponent(parts[0]
.trimLeft()), value = parts.length > 1 ?decodeURIComponent(部分[1]
.trimRight())
: 无效的;
饼干[名称] = 价值;
});
} 别的 {
C
。匹配(
/(?:^|\s+)([!#$%&'*+\-.0-9A-Z^`az|~]+)=([!#$%&'*+\-.0 -9A-Z^`az|~]*|"(?:[\x20-\x7E\x80\xFF]|\\[\x00-\x7F])*")(?=\s*[,; ]|$)/g)
。地图(
函数($0,$1){
var name = $0, value = $1.charAt(0) === '"' ? $1
.substr(1, -1).replace(/\\(.)/g, "$1")
: $1;
饼干[名称] = 价值;
});
}
返回 cookie;
}
函数getCookie(名称){
返回 getCookies()[名称];
}
