如何通过Servlet或配置文件为Weblogic的JSESSIONID添加SameSite=Strict属性
解决方案汇总
方案1:通过Servlet过滤器手动修改Set-Cookie响应头(全版本兼容)
这是兼容性最高的方案,不受Weblogic版本限制,实现逻辑如下:
- 新建Filter类,拦截所有请求,在响应返回前匹配JSESSIONID的Set-Cookie头,追加SameSite属性
示例代码:
import javax.servlet.*; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.Collection; public class SameSiteCookieFilter implements Filter { @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletResponse resp = (HttpServletResponse) response; chain.doFilter(request, resp); // 匹配JSESSIONID的Cookie头 Collection<String> headers = resp.getHeaders("Set-Cookie"); resp.resetBuffer(); // 清空原有Set-Cookie头 for (String header : headers) { if (header.startsWith("JSESSIONID") && !header.contains("SameSite")) { header += "; SameSite=Strict"; } resp.addHeader("Set-Cookie", header); } } }
- 在web.xml中注册过滤器,确保优先级最高,拦截所有请求:
<filter> <filter-name>SameSiteCookieFilter</filter-name> <filter-class>com.yourpackage.SameSiteCookieFilter</filter-class> </filter> <filter-mapping> <filter-name>SameSiteCookieFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
方案2:Weblogic 12.2.1.4及以上版本原生配置
如果你的Weblogic版本在12.2.1.4及以上,weblogic.xml的配置要放在正确的节点下才会生效,正确配置如下:
<session-descriptor> <cookie-properties> <property> <name>CookieSameSite</name> <value>Strict</value> </property> <property> <name>HttpOnlyCookieEnabled</name> <value>true</value> </property> </cookie-properties> </session-descriptor>
注意:配置完成后需要重启Weblogic域,清除浏览器缓存后再验证,避免缓存的旧Cookie干扰测试
方案3:Weblogic全局域配置(无需修改应用代码)
如果需要对域内所有应用生效,可以直接修改域配置:
- 进入Weblogic控制台,依次点击
域 > 服务器 > 你的服务名 > 服务器启动 - 在
参数输入框追加JVM启动参数:-Dweblogic.http.cookie.SameSite=Strict - 保存配置后重启服务即可生效
验证方法:发起首次请求后查看响应的Set-Cookie头,确认返回格式为
Set-Cookie: JSESSIONID=xxx; path=/; HttpOnly; SameSite=Strict即配置成功
内容的提问来源于stack exchange,提问作者danish khan
相关产品推荐
相关产品推荐

