我正在使用 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()[名称]; }