3

我们正在使用 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 不接受这一点。

谢谢!

4

1 回答 1

1

你可以做的事情来调试:

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

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

于 2012-12-11T02:48:14.147 回答