Java 应用程序中的 SameSite cookie

新手上路,请多包涵

您知道任何允许为 cookie 设置自定义标志的 Java cookie 实现,例如 SameSite=strict 吗?似乎 javax.servlet.http.Cookie 有一组严格限制的可以添加的标志。

原文由 Michal_Szulc 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

我不是 JEE 专家,但我认为由于该 cookie 属性是一项有点新的发明,您不能指望它会出现在 Java EE 7 接口或实现中。 Cookie 类似乎缺少通用属性的设置器。但不是将 cookie 添加到您的 HttpServletResponse 通过

response.addCookie(myCookie)

您可以通过简单地设置相应的 HTTP 标头字段

response.setHeader("Set-Cookie", "key=value; HttpOnly; SameSite=strict")


更新: 感谢 @mwyrzyk 指出 setHeader() 覆盖所有同名的现有标头。因此,如果您碰巧在响应中已经有其他 Set-Cookie 标头,当然您会使用具有相同参数的 addHeader() 代替。

原文由 kriegaex 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果您不想更新所有代码,您也可以使用 Apache 或 Nginx 配置(或您正在使用的任何其他 HTTP 服务器/代理)通过一行配置来实现相同的目的

1 使用 Apache 配置设置 SameSite cookie

您可以将以下行添加到您的 Apache 配置中

Header always edit Set-Cookie (.*) "$1; SameSite=Lax"

这将使用 SameSite=Lax 标志更新您的所有 cookie

在此处查看更多信息: https ://blog.giantgeek.com/?p=1872

2 使用 Nginx 配置设置 SameSite cookie

 location / {
    # your usual config ...
    # hack, set all cookies to secure, httponly and samesite (strict or lax)
    proxy_cookie_path / "/; secure; HttpOnly; SameSite=strict";
}

同样在这里,这也会用 SameSite=Lax 标志更新你所有的 cookie

在此处查看更多信息: https ://serverfault.com/questions/849888/add-samesite-to-cookies-using-nginx-as-reverse-proxy

原文由 Marty Aghajanyan 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏