如何设置SameSite属性?

问题描述

事实证明,使用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"));
    }

解决方法

我在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或如何在响应过滤器中覆盖标头?

提前致谢。

猜你在找的技术问答相关文章

如何检查配对的蓝牙设备是打印机还是扫描仪(Android)
是否允许实体正文进行HTTP DELETE请求?
如何将ZipInputStream转换为InputStream?
java.util.logging Java 8中的变量
PowerMockito.doReturn返回null
Java中的RESTful调用
Swing / Java:如何正确使用getText和setText字符串
特殊字符和重音字符
Android Studio中的ndk.dir错误
错误“找不到主类”