2016-07-13 3 views
0

レスポンスにCookieを送信するREST Webサービスがあります。 REST URLは、私がCookieのパス属性は、後続のリクエストに影響しません

Response.ok(entity).cookie(new NewCookie("JSESSIONID", "12344", "/", "localhost", null, -1, false)); 

私は、Webサービスのレスポンスヘッダを参照すると、クッキーヘッダーが

"JSESSIONID=12344;Domain=localhost;Path="/";Version=1" 
以下のようになります。以下のようにクッキーを設定している私のJavaコードで http://localhost:8080/myfoo/service/v1/acc/login

のように見えます

しかし、以下のような同じドメインの別のパスに依頼すると

http://localhost:8080/mybar/service/v1/acc/profile

リクエストにCookieは送信されません。

私はブラウザ(コンテンツ設定を使用して)でCookieを見たとき、私は以下のCookieのエントリを見ました。

Name: JSESSIONID 
Content: 12344 
Domain: localhost 
Path: /myfoo/service/v1/acc/login 
Send for: Any kind of connection 
Accessible to script: Yes 
Created: Wednesday, July 13, 2016 at 5:04:40 PM 
Expires: When the browsing session ends 

あなたが気づくのであれば、ブラウザの店舗でクッキーのパス属性は、RESTサービスは、と答えていたものとは異なっています。どんなアイデアがここで間違っているの?

+0

、私はクッキーのデフォルトの「パス」属性の値を上書きすることができません –

答えて

0

長い研究の後、私は根本原因を発見しました。問題はcxfライブラリ3.1.6で発生しました。クッキーオブジェクトをヘッダーに変換する際には、特殊文字を引用符で囲みます。 したがって、Set-Cookieヘッダーのjavaコードで "/"にクォートされています。しかし、ブラウザは "/"が無効であると判断し、パスを現在のパスに設定します。

しかし、3.1.7-SNAPSHOTにはこれが修正されています。 私のcxfライブラリを上記のバージョンにアップデートした後、問題は解決されました。

ライブラリを更新したくない場合は、代わりの解決策としてSet-Cookieヘッダーを手動で設定することができます。ここで

が参照である:つまり https://issues.apache.org/jira/browse/CXF-6862

関連する問題