mwy*_*zyk 6 java cookies http servlet-filters
我在 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");
Run Code Online (Sandbox Code Playgroud)
它工作正常,但是当我在一个响应中有多个“Set-Cookie”标头时出现问题。javax.servlet.http.HttpServletResponse不提供删除或覆盖多个具有相同名称的 heder 的方法(迭代它们并使用setHeader()不起作用,因为它总是设置最后一个)。您知道如何将 SameSite 属性设置为 cookie 或如何覆盖响应过滤器中的标头吗?
提前致谢。
mwy*_*zyk 11
事实证明,使用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"));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17662 次 |
| 最近记录: |