前端vue在http.js中添加配置axios.defaults.withCredentials = true如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/b686e4ca5ae64d1fbea02bd40a03c6a2.png)
后端springboot拦截器中添加如下代码
response.setHeader("Access-Control-Allow-Headers", "Authorization,token,Origin, X-Requested-With, Content-Type, Accept");
String curOrigin = request.getHeader("Origin");
response.setHeader("Access-Control-Allow-Origin", curOrigin == null ? "true" : curOrigin);
添加配置文件CorsConfig
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class CorsConfig implements WebMvcConfigurer {
static final String ORIGINS[] = new String[]{"GET", "POST", "PUT", "DELETE","OPTIONS"};
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOriginPatterns("*")
.allowCredentials(true)
.allowedMethods(ORIGINS)
.maxAge(3600);
}
}
以上操作完成后不论是Controller里注入HttpServletRequest还是方法中传参HttpServletRequest都能获取到保存过的session信息了
@Slf4j
@CrossOrigin
@RestController
@RequestMapping("/Test")
public class TestController {
@Resource
private HttpServletRequest request;
@PostMapping("/getSession")
public String getSession() {
HttpSession session=request.getSession();
String userId=(String)session.getAttribute("userId");
String userName=(String)session.getAttribute("userName");
return "Checkout success";
}
@PostMapping("/getSession2")
public String getSession2(HttpServletRequest request2) {
HttpSession session=request2.getSession();
String userId=(String)session.getAttribute("userId");
String userName=(String)session.getAttribute("userName");
return "Checkout success";
}