java 後臺解決跨域訪問的問題

解決跨域問題的方式有很多,這裏主要是添加註解的方式和採用添加攔截器的方法:

方法一、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 {
            }
        });
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章