3

Play!を使用してアプリケーションを開発しています。1.2.5およびGoogleAppEngineへのデプロイ。application.confで、セッションCookieをhttpOnlyで安全に設定しました。

application.session.httpOnly=true
application.session.secure=true

ローカルでリクエストを実行すると、ヘッダーが正しく設定されていることがわかります。

Set-Cookie: PLAY_SESSION=something;Expires=Mon, 10-Dec-2012 14:51:56 GMT;Path=/;Secure;HTTPOnly

Google App Engineにデプロイすると、設定されているCookieにSecureフラグまたはHTTPOnlyフラグが表示されません。どうして?

オンラインで同様の問題を見つけることができません。私が読んだ最も近いものは、GAEがresponse.setHttpOnly(または同様のもの)をサポートしていないが、Playからのものでした!ソースコードhttpOnly値がブール値に設定されて応答に書き込まれる単純なCookieが作成されているのを見ることができます。GAEがこれを受け入れない理由がわかりません。

ありがとう!

4

1 に答える 1

1

デバッグのためにできること:

  • 問題がすべての Cookie に当てはまるかどうかを確認するには、セッションではなく、別の Cookie (または httpOnly パラメータが true に設定された response.setCookie) で response.setHttpOnly を実行します。
  • コントローラーで、受信したすべての Cookie のマップである request.cookies をチェックして、受信した Cookie の httpOnly 値を確認します。
  • 上記の2つに応じて、request.cookiesとresponse.cookiesにあるものがhttpOnlyに関して一貫しているかどうかを確認してください
  • 上記に応じて、応答 Cookie を編集して httpOnly を true に設定します。
  • 上記のいずれも機能しない場合は、"Set-cookie" ヘッダーを手動で生成してください。Cookie マップから値を取得し、その Cookie をマップから削除して複製しないようにし、手動で作成したもので response.setHeader を実行します。

すべてが解決策を提供するわけではありませんが、何が起こっているのか、それが可能かどうかを理解するのに役立つかもしれません.

于 2012-12-11T02:48:14.147 に答える