2

我們正在使用Play開發應用程序! 1.2.5並部署到Google App Engine。 在application.conf我已經設置了會話cookie是的HttpOnly和安全:HttpOnly /使用Play Framework和Google App Engine保護Cookie

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 

當我部署到谷歌App Engine,我沒有看到任何設置的cookie上的安全或HTTPOnly標誌。怎麼來的?

我在網上找不到類似的問題。我讀的最近的東西是GAE不支持response.setHttpOnly(或類似的東西),但是從Play!源代碼我可以看到一個簡單的Cookie正在創建,httpOnly值被設置爲一個布爾值並寫入響應。不知道爲什麼GAE不會接受這個。

謝謝!

+0

如果你仍然遇到這個問題,你嘗試過使用App Engine [軟環境(https://cloud.google.com/appengine/docs/flexible/)設置這些參數?實際上,您可能會對目前Beta版的靈活的Java 8/Jetty 9.3 [運行時](https://cloud.google.com/appengine/docs/flexible/java/dev-jetty9)的集成Servlet 3.1所以應該讓你指定兩個cookie參數。 – Alex

回答

1

事情可以做調試:

  • 待辦事項response.setHttpOnly上不同的Cookie(或response.setCookie與中HTTPOnly PARAM設置爲true),而不是第一個會話,看問題是否適用到所有的cookies。
  • 在您的控制器中,檢查request.cookies(包含所有收到的cookie的地圖)以查看接收到的cookie的httpOnly值。
  • 根據上面這兩個,也許檢查你在Request.Cookies時和response.cookies具有與問候的HttpOnly
  • 根據上述一致,也許編輯響應的cookie設置的HttpOnly爲true
  • 如果以上都不行,可能會手動生成一個「Set-cookie」標題。獲得從餅乾映射中的值,從地圖上刪除cookie來沒有它複製,並與做response.setHeader手動創建一個

所有可能不會給你的解決方案,但也許會幫助你瞭解發生了什麼事情,甚至可能。