问题描述
事实证明,使用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或如何在响应过滤器中覆盖标头?
提前致谢。