解決跨域問題的方式有很多,這裏主要是添加註解的方式和採用添加攔截器的方法:
方法一、springboot 採用註解方式
spring boot中只用在Controller類上添加一個“@CrossOrigin“註解就可以實現對當前controller 的跨域 訪問了,當然這個標籤也可以加到方法上。
@CrossOrigin
public class CommonController {}
其他controller類繼承以上這個類就可以解決跨域問題。
注意:“@CrossOrigin“註解要求jdk1.8以上版本
方法二、通過攔截器的方法
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
@Autowired
private EnvConfig envConfig;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new HandlerInterceptor() {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
boolean isTrue = envConfig.getIsDev();//判斷是測試服才需要解決跨域問題
if (isTrue) {
response.addHeader("Access-Control-Allow-Origin", "*");
response.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
response.addHeader("Access-Control-Allow-Headers",
"Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers,token");
}
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,
Exception ex) throws Exception {
}
});
}
}