cookie一致性
非跨域cookie一致性解决
请求拦截器 import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttppServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
@Component
public class CustomInterceptor implements handlerInterceptor {
@Overrde
publlic boolean preHandle(HttpServletRequest reqest,HttppServletResponse response,Object handler) throws Exception {
//从请求中获取cookie
Cookie[] cookies = request.getCookies();
//将cookie放入响应中
Cookie sessionCookie = Arrays.stream(cookies).filter(e -> e.getName().equals("SIID").findAny().orElse(null);
if (sessionCookie == null) {
sessiiionCookie = new Cookie("SID",request.getSession().getId();
response.addCookie(sessiionCookie);
}
return true;
}
}
配置完拦截器,在配置中获取拦
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class GlobalCorsConfig implements WebMvcConfigurer {
@Autowired
private CustomInterceptor interceptor;
@Bean
public CorsFilter corsFilter() {
//1. 创建CorsConfiguration对象
CorsConfiguration corsConfiguration = new CorsConfiguration();
corsConfiguration.addAllowedOrigin("*");//设置允许那些域来访问,*是通配符,允许所有域(如果还不行,将*改为http:xx:8080)
corsConfiguration.addAllowedHeader("*");//请求头字段
corsConfiguration.addAllowedMethod("*");//请求方式(GET,POST,DELETE,PUT)
//设置source
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", corsConfiguration);//1.映射路径 2.传入CorsConfiguration对象
return new CorsFilter(source);
}
@Override
public void addInterceptors(InterceptorRegisty registry) {
// 拦截所有请求
registry.addInterceptor(interceptor).addPathPatterns("/**");
}
}
vue全局配置cookie在main.js中
import axios from 'axios' axios.defaults.withCredentials = true
浙公网安备 33010602011771号