小编典典

如何设置SameSite属性?

java

我在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并未提供删除或覆盖多个同名牧师的方法(在它们上面进行迭代并使用setHeader()不起作用,因为它总是设置最后一个牧师)。您是否知道如何将SameSite属性设置为cookie或如何在响应过滤器中覆盖标头?

提前致谢。


阅读 6936

收藏
2020-11-26

共1个答案

小编典典

事实证明,使用setHeader()method删除所有具有相同名称的先前标头,因此我只创建了简单的for循环doFilter()方法。它将SameSite
= Strict属性添加到设置的每个cookie。

    boolean firstHeader = true;
    for (String header : cookiesHeaders) {
        if (firstHeader) {
            httpResponse.setHeader("Set-Cookie", String.format("%s; %s", header, "SameSite=Strict"));
            firstHeader = false;
            continue;
        }
        httpResponse.addHeader("Set-Cookie", String.format("%s; %s", header, "SameSite=Strict"));
    }
2020-11-26