【发布时间】:2019-11-21 05:32:50
【问题描述】:
我有一个 Scala Play 框架 2.7.3 版本的项目。我需要解决能够将 cookie 的 Samesite 值设置为“无”的问题。目前在 2.7.3 中,您只能通过枚举设置为“Lax”或“Strict”。将值设置为“无”has been backported for 2.7.x 但尚未发布的能力。
我现在需要解决这个问题,迫不及待地等待未来的版本。我很难弄清楚如何在给定的框架内完成将 Cookie 的 Samesite 值设置为“无”。
为了修改过滤器中的响应结果,我看到我可以调用 result.withCookie() ,它需要一个或多个 play.api.mvc.cookie。我尝试扩展和修改play.api.mvc.cookie,但 Samesite 类在 Cookie 类中是密封的抽象。
我认为我可以在响应发出之前使用基本过滤器或操作来修改 cookie,但看不到获取现有 CSRF cookie 或 Play_Session cookie 并对其进行修改的方法。
有什么想法吗?
【问题讨论】:
-
不熟悉框架,但有一些在类似情况下工作的东西:自己发送
Set-cookie,而不是使用cookie功能。或者,在某种代理级别(例如 Apache)更改 cookie。我在这里有一个早期的 Cloudflare Worker 示例:github.com/GoogleChromeLabs/samesite-examples/blob/… -
谢谢@rowan_m - 我想我们可以使用这样的代理。希望有另一个解决方案,因为我有另一个团队,这不是一个选项。
标签: scala cookies playframework