jsessionid是什么?
Jsessionid只是tomcat的对sessionid的叫法,其实就是sessionid;在其它的容器也许就不叫jsessionid了。
先这是一个保险措施 因为Session默认是需要Cookie支持的,但有些客户浏览器是关闭Cookie的,所以在这个时候就需要在URL中指定服务器上的session标识,也就是EDE802AB96CD1E0CA2AFB3830D18FB10,每当用户第一次访问页面的时候,后端获取的地址是包含 jsessionid参数。
这样拼接 静态资源或者A标签或Form的地址的时候,链接就变成了:
http://localhost:8080?jsessionid=EDE802AB96CD1E0CA2AFB3830D18FB10home/user 造成访问相关页面404.
操作步骤:
1,启动类中继承 SpringBootServletInitializer 重写onStartup方法
public class A extends SpringBootServletInitializer {
public static void main(String[] args) {
TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));
SpringApplication.run(A.class,args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application){
return application.sources(A.class);
}
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
super.onStartup(servletContext);
servletContext.setSessionTrackingModes(Collections.singleton(SessionTrackingMode.COOKIE));
SessionCookieConfig sessionCookieConfig=servletContext.getSessionCookieConfig();
sessionCookieConfig.setHttpOnly(true);
}
}
2,在springboot 配置文件中配置,这里配置的是yaml
server:
servlet:
session:
tracking-modes: COOKIE
完毕!