【问题标题】:Scala Play - How to Modify Cookie setting value before response goes out?Scala Play - 如何在响应消失之前修改 Cookie 设置值?
【发布时间】: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


【解决方案1】:

我认为解决方法可能是使用@rowan_m 提到的代理。幸运的是,Lightbend 回复了我,并将很快发布他们的 2.8 版本 - 我在 RC 中验证了使用配置设置解决了问题:https://github.com/playframework/playframework/pull/9613#issuecomment-555305142

【讨论】:

    猜你喜欢
    • 2020-06-01
    • 2016-02-11
    • 1970-01-01
    • 1970-01-01
    • 2019-12-09
    • 1970-01-01
    • 2016-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多