クライアント側でCookieを設定するためにRESTレスポンスを使用しています。しかし、Chromeで「リソース」を開いたときにCookieが設定されているのがわかりません。しかし、興味深いことに、Chromeの設定に移動してすべてのCookieを確認すると、設定しているCookieが見つかります。繰り返しますが、w3schoolsのgetCookie()javascript関数(またはすべての可能性を処理するためのより良いバージョン)は私に何もフェッチしません。Firefoxを試してみましたが、同じことが起こります。すべてのCookieを表示すると、Cookieが表示されますが、JS関数getCookie()は何も返しません。クッキーが正しく設定されていないと思います。
これが私のJAX-RS応答です:
Cookie c1 = new Cookie(Constants.SESSION_TOKEN、response .getSessionToken()。getValue()); Cookie c2 = new Cookie(Constants.USER_IDENTIFIER、 response.getUserIdentifier()); NewCookie cookie1 = new NewCookie(c1); NewCookie cookie2 = new NewCookie(c2); Response.ok(jsonResponse、MediaType.APPLICATION_JSON)を返します .cookie(cookie1、cookie2).build();
そしてこれは私のJSgetCookie()関数です
関数getCookies(){ var c = document.cookie、v = 0、cookies = {}; if(document.cookie.match(/ ^ \ s * \ $ Version =(?: "1" | 1); \ s *(。*)/)){ c=RegExp。$1; v = 1; } if(v === 0){ c 。スプリット(/[、;]/) 。地図( function(cookie){ var Parts = cookie.split(/ = /、2)、name = decodeURIComponent(parts [0] .trimLeft())、値=パーツ。長さ> 1?decodeURIComponent(parts [1] .trimRight()) : ヌル; クッキー[名前]=値; }); } そうしないと { c 。マッチ( /(?:^|\s+)([!#$%&'*+\-.0-9A-Z^`az|~]+)=([!#$%&'*+\-.0 -9A-Z ^ `az |〜] * |"(?:[\ x20- \ x7E \ x80 \ xFF] | \\ [\ x00- \ x7F])* ")(?= \ s * [、; ] | $)/ g) 。地図( function($ 0、$ 1){ var name = $ 0、value = $ 1.charAt(0)==='"'?$ 1 .substr(1、-1).replace(/\\(.)/g、 "$ 1") :$ 1; クッキー[名前]=値; }); } クッキーを返す; } 関数getCookie(name){ getCookies()[name];を返します。 }