我在Cookie中设置SameSite属性时遇到问题。我想设置这个属性,但是javax.servlet.http.Cookie和java.net.HttpCookie都没有提供处理它的方法。因此,我有一个想法是创建一个捕获"Set-Cookie“头并添加"SameSite=Strict”属性的响应javax.servlet.Filter。
response.setHeader("Set-Cookie", response.getHeader("Set-Cookie") + "; SameSite=strict");它工作正常,但当我在一个响应中有多个"Set-Cookie“头时出现问题。javax.servlet.http.HttpServletResponse不提供删除或覆盖同名的多个heder的方法(迭代它们并使用setHeader()不起作用,因为它总是设置最后一个heder)。你知道如何将SameSite属性设置为cookie,或者如何覆盖响应过滤器中的报头吗?
提前谢谢。
发布于 2018-06-06 00:04:38
事实证明,使用setHeader()方法可以删除前面所有同名的头文件,所以我只在doFilter()方法中创建了简单的for循环。它将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"));
}发布于 2019-10-15 08:55:46
在etc/apache2/httpd.conf中
标题编辑集-Cookie^(.*)$ $1;SameSite=Strict
对我来说……
发布于 2020-03-26 11:29:36
新的Tomcat通过TomcatContextCustomizer支持SameSite cookies。
@Configuration中完成,请参见https://stackoverflow.com/a/60860531/548473 context.xml中,请参见context.xmlhttps://stackoverflow.com/questions/50668961
复制相似问题