美文网首页
SpringBoot解决跨域

SpringBoot解决跨域

作者: 周_0717 | 来源:发表于2020-02-25 22:30 被阅读0次

    请求发起人与被请求人必须拥有相同的协议、主机地址以及端口,一旦这三项数据中有一项不同,那么该请求便是跨域请求。
    解决方法:

    1. 使用@CrossOrigin注解:
      注解可以放在method、class等上面,可以控制整个controller,也可以控制单个方法,这个是最小粒度的控制方法。
    @CrossOrigin(origins = "请求的协议://请求的地址:请求的端口", maxAge = 3600)
    
    1. 配置自定义过滤器:
    import org.springframework.context.annotation.Configuration;
    import javax.servlet.*;
    import javax.servlet.annotation.WebFilter;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    @WebFilter(filterName = "CorsFilter ")
    @Configuration
    public class CorsFilter implements Filter {
        @Override
        public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
            HttpServletResponse response = (HttpServletResponse) res;
            response.setHeader("Access-Control-Allow-Origin","*");
            response.setHeader("Access-Control-Allow-Credentials", "true");
            response.setHeader("Access-Control-Allow-Methods", "POST, GET, PATCH, DELETE, PUT");
            response.setHeader("Access-Control-Max-Age", "3600");
            response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
            chain.doFilter(req, res);
        }
    }
    
    1. 自定义WebMvcConfigurer配置全局属性
    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 {
    
        @Override
        public void addCorsMappings(CorsRegistry registry) {
            registry.addMapping("/**")
                    .allowedOrigins("*")
                    .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
                    .allowCredentials(true)
                    .maxAge(3600)
                    .allowedHeaders("*");
        }
    }
    

    2020-02-25

    相关文章

      网友评论

          本文标题:SpringBoot解决跨域

          本文链接:https://www.haomeiwen.com/subject/yjbbqhtx.html