【问题标题】:HttpOnly / secure cookies with Play Framework and Google App EngineHttpOnly / 使用 Play Framework 和 Google App Engine 保护 cookie
【发布时间】:2012-11-27 23:08:24
【问题描述】:

我们正在使用 Play 开发一个应用程序! 1.2.5 并部署到 Google App Engine。 在 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!源代码我可以看到一个简单的 Cookie 正在创建,其中 httpOnly 值设置为布尔值并写入响应。不知道为什么 GAE 不接受这个。

谢谢!

【问题讨论】:

  • 如果您仍然遇到此问题,您是否尝试过使用 App Engine Flexible environment 设置这些参数?事实上,您可能对集成 Servlet 3.1 的灵活 Java 8 / Jetty 9.3 Runtime 的当前 Beta 版本感兴趣,因此您应该能够指定两个 cookie 参数。

标签: google-app-engine playframework session-cookies playframework-1.x httponly


【解决方案1】:

你可以做的调试:

  • 对不同的 cookie(或将 httpOnly 参数设置为 true 的 response.setCookie)而不是会话之一执行 response.setHttpOnly,以查看问题是否适用于所有 cookie。
  • 在您的控制器中,检查 request.cookies,一个包含所有接收到的 cookie 的映射,以查看接收到的 cookie 的 httpOnly 值。
  • 根据以上两个,也许检查一下你在 request.cookies 和 response.cookies 中的内容是否与 httpOnly 一致
  • 根据上述情况,可以编辑响应 cookie 以将 httpOnly 设置为 true
  • 如果上述方法均无效,则可能手动生成“Set-cookie”标头。从 cookie 映射中获取值,从映射中删除该 cookie 以使其不重复,然后使用手动创建的响应执行 setHeader

所有这些可能无法为您提供解决方案,但可能会帮助您了解正在发生的事情以及是否可能。

【讨论】:

    猜你喜欢
    • 2014-07-27
    • 1970-01-01
    • 1970-01-01
    • 2014-04-16
    • 2012-11-14
    • 2019-10-28
    • 1970-01-01
    • 1970-01-01
    • 2021-07-18
    相关资源
    最近更新 更多