public class JwtFilter extends BasicHttpAuthenticationFilter {
/**
* 跨域支持
* @param request
* @param response
* @return
* @throws Exception
*/
@Override
protected boolean preHandle(ServletRequest request, ServletResponse response) throws Exception {
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
HttpServletResponse httpServletResponse = (HttpServletResponse) response;
httpServletResponse.setHeader("Access-control-Allow-Origin", httpServletRequest.getHeader("Origin"));
httpServletResponse.setHeader("Access-Control-Allow-Methods", "GET,POST,OPTIONS,PUT,DELETE");
httpServletResponse.setHeader("Access-Control-Allow-Headers", httpServletRequest.getHeader("Access-Control-Request-Headers"));
// 跨域时会首先发送一个option请求,这里我们给option请求直接返回正常状态
if (httpServletRequest.getMethod().equals(RequestMethod.OPTIONS.name())) {
httpServletResponse.setStatus(HttpStatus.OK.value());
return false;
}
return super.preHandle(request, response);
}
}
第一个问题是没使用请求头的token 出现了跨域问题 然后我开启了全局跨域
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
/**
* 基于Servlet的全局配置
* @param registry
*/
@Override
public void addCorsMappings(CorsRegistry registry) {
System.out.println("处理全局跨域");
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("POST","GET","PUT","DELETE")
.maxAge(1800)
.allowCredentials(true)
.allowedHeaders("*")
.exposedHeaders("L-TOKEN");
}
}
但是 jwtFilter里面的方法始终都会出现跨域的问题 这是什么情况呢 该怎么解决 看网上说 只要用上面的就可以了 但发现不行