spring-boot 请求为什么会出现jsessionid=856DC0387CAE5FFCBD4B4A3810AFB646
时间: 2023-08-13 07:06:05 浏览: 173
JSESSIONID是Java Web应用程序中使用的一个Session标识符。在Spring Boot中,默认情况下启用了Session机制,因此在进行请求时,服务器会为每个会话分配一个唯一的JSESSIONID,以便在后续的请求中识别用户。
如果你在请求中看到了类似于jsessionid=856DC0387CAE5FFCBD4B4A3810AFB646的信息,那么说明你的请求已经启用了Session机制,并且该会话的ID是856DC0387CAE5FFCBD4B4A3810AFB646。这通常是服务器在处理请求时自动添加的,而不是由开发人员手动添加的。
如果你不想在请求中看到JSESSIONID,可以通过配置Spring Boot禁用Session机制,或者使用URL重写技术隐藏JSESSIONID。
相关问题
spring-boot 请求为什么会出现jsessionid=856DC0387CAE5FFCBD4B4A3810AFB646,请给出解决方法。或者代码
在Spring Boot应用中,如果使用了Session机制,请求时会自动带上JSESSIONID,如果不想在URL中看到JSESSIONID,可以通过以下两种方式解决:
1. 使用Cookie存储Session ID:
在Spring Boot中,可以通过配置将Session ID存储在Cookie中,而不是URL中。在application.properties文件中添加以下配置:
```
server.servlet.session.cookie.name=MYSESSIONID
server.servlet.session.cookie.http-only=true
server.servlet.session.cookie.path=/
server.servlet.session.cookie.max-age=1800
```
其中,MYSESSIONID是自定义的Session ID名称,http-only表示Cookie只能通过HTTP或HTTPS传输,不能通过JavaScript获取或修改,path表示Cookie的路径,max-age表示Cookie的过期时间,单位为秒。
2. 使用URL重写隐藏JSESSIONID:
在Spring Boot中,可以通过配置URL重写来隐藏JSESSIONID。在WebSecurityConfigurerAdapter中添加以下配置:
```java
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
// ...
.sessionManagement()
.sessionFixation().migrateSession()
.sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED)
.sessionAuthenticationStrategy(sessionAuthenticationStrategy())
.sessionConcurrency(sessionConcurrency())
.invalidSessionUrl("/login?timeout")
.maximumSessions(2).maxSessionsPreventsLogin(true)
.expiredUrl("/login?expired")
.and()
.and()
.logout()
.logoutUrl("/logout")
.logoutSuccessUrl("/")
.invalidateHttpSession(true)
.deleteCookies("JSESSIONID")
.and()
.and()
.portMapper()
.http(8080).mapsTo(8443)
.http(80).mapsTo(443)
.and()
.and()
.rememberMe()
.userDetailsService(userDetailsService())
.tokenValiditySeconds(1209600)
.key("uniqueAndSecret");
}
@Bean
public HttpSessionIdResolver httpSessionIdResolver() {
return HeaderHttpSessionIdResolver.xAuthToken(); // 通过HTTP头传递Session ID
}
}
```
其中,HeaderHttpSessionIdResolver.xAuthToken()表示通过HTTP头传递Session ID,也可以使用其他方式传递Session ID。
以上是两种解决方法,可以根据实际情况选择。
spring-boot 请求出现jsessionid=856DC0387CAE5FFCBD4B4A3810AFB646
这是因为 Spring Boot 默认开启了 Session 支持,会在每个请求中添加一个 JSESSIONID 的 Cookie,用于识别该用户的 Session。JSESSIONID 是一个由服务器自动生成的唯一标识符,用于标识该用户的 Session。
如果你不需要使用 Session,可以在 Spring Boot 的配置文件中将 Session 关闭,以避免 JSESSIONID 的出现。在 application.properties 或 application.yml 文件中添加以下配置即可:
关闭 Session:
```
server.servlet.session.enabled=false
```
禁用 Cookie:
```
server.servlet.session.cookie.enabled=false
```
阅读全文