我在 Cookie 中设置 SameSite 属性时遇到问题。我想设置这个属性,但是 javax.servlet.http.Cookie
和 java.net.HttpCookie
都没有提供处理它的方法。因此,我想创建一个响应 javax.servlet.Filter
捕获“Set-Cookie”标头并添加“SameSite=Strict”属性。
response.setHeader("Set-Cookie", response.getHeader("Set-Cookie") + "; SameSite=strict");
它工作正常,但当我在一个响应中有多个“Set-Cookie”标头时出现问题。 javax.servlet.http.HttpServletResponse
不提供删除或覆盖多个具有相同名称的 heder 的方法(迭代它们并使用 setHeader()
不起作用,因为它总是设置最后一个)。您知道如何将 SameSite 属性设置为 cookie 或如何覆盖响应过滤器中的标头吗?
提前致谢。
原文由 mwyrzyk 发布,翻译遵循 CC BY-SA 4.0 许可协议
事实证明,使用
setHeader()
方法删除了所有以前的同名标头,所以我只是在doFilter()
方法中创建简单的 for 循环。它向设置的每个 cookie 添加SameSite=Strict
属性。