2016-09-09 5 views
0

私は似たような質問を閲覧しましたが、私が試した解決策はありません。AngularJs:サーバーから送信されたクッキーを読み取ることができません

レスポンスにクッキーを追加してAngularjsフロントエンドアプリケーションに返すJersey2.0 RESTサービスがあります。私はすでに設定が正しく行われています(Access-Control-Allow-Credentials = true、Access-Control-Allow-Originなどのワイルドカードはありません)。

私はそうのような応答にヘッダーを「SET-COOKIE」を追加することによってそれを行う:

MultivaluedMap<String, Object> headers = responseContext.getHeaders(); 
headers.add("SET-COOKIE", new NewCookie(cookieName, cookieValue); 

これは動作しますが、私はクッキーがその特定のRESTサービス呼び出しの応答にして返されて見ることができますその特定のRESTエンドポイント。つまり、Chromeデベロッパーコンソールの[ネットワーク]タブで、Cookieを返すと思われるリクエストをクリックすると、[Cookie]タブと[Headers]タブの両方で返されたCookieが表示されますレスポンス。実際、エンドポイントに別のリクエストを行うと、同じクッキーがリクエストで送信され、Jerseyサーバーで取得できます。

素晴らしい。問題は、Cookieが[リソース]タブに表示されていないことです。 「リソース」タブをクリックし、左側にある「Cookies」ドロップダウンを選択し、localhostを選択すると、応答で送信しようとしているクッキーはそこにありません。私はこれが、ngCookiesを使用して$cookies.get('cookieId');経由で私のAngularJsアプリケーションでCookieを取得しようとすると、私は未定義になると仮定しています。

また、誰かが回答/コメントで言及している場合にのみ、私はこの問題がHttpOnlyではないと確信しています。私のJSESSIONIDクッキーが返され、HttpOnlyを示すHttpフィールドがチェックされた 'Resources'タブでそれを見ることができます。

私は会社の環境にいるので、クッキーを追加することはできませんが、$Cookies.put('cookieId', 'cookieValue');でAngularフロントエンドでこれを行うことができ、 'Resources'タブに表示されます良い。

なぜ私のクッキーがサーバーから追加されていないのですか?

答えて

1

オリジナルのものに関するいくつかのstackoverflow質問を掘り下げた後、私はthis stackoverflow questionを通して、1つのドメインで作成されたCookieがJavascriptを使用して別のドメインでアクセスできないことを発見しました。

私はこのための回避策を考え出す必要がありますが、私の元の質問はこれに答えたように答えられています。

0

あなたのケースでは、クッキーのパスを設定するだけで簡単に解決できます。

Cookie myCookie = new Cookie("Name_of_cookie", "String_value_of_cookie") 
myCookie.setPath("/the domain Js is using ") 

それとも、おそらくJsのが配備されているメインのドメインの/のままにしておきます。

関連する問題