• SpringBoot解决跨域问题


    方法一、spring boot中只用在Controller类上添加一个“@CrossOrigin“注解就可以实现对当前controller 的跨域 访问了,当然这个标签也可以加到方法上。

    @CrossOrigin(origins = "http://192.168.1.10:8080", maxAge = 3600)
    @RequestMapping("rest_index")
    @RestController
    public class IndexController{

    }

    其他controller类继承以上这个类就可以解决跨域问题。

    注意:“@CrossOrigin“注解要求jdk1.8以上版本

    方法二、基于WebMvcConfigurerAdapter配置加入Cors的跨域(常用)

    import org.springframework.context.annotation.Configuration; 
    
    import org.springframework.web.servlet.config.annotation.CorsRegistry; 
    
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; 
    
    @Configuration 
    
    public class CorsConfig extends WebMvcConfigurerAdapter { 
        
        /**
        * 就是注册的过程,注册Cors协议的内容。
        * 如: Cors协议支持哪些请求URL,支持哪些请求类型,请求时处理的超时时长是什么等。
        */
        @Override 
    
        public void addCorsMappings(CorsRegistry registry) { 
        
            registry.addMapping("/**") // 所有的当前站点的请求地址,都支持跨域访问
    
                   .allowedOriginsPatterns("*") // 所有的外部域都可跨域访问。 如果是localhost则很难配置,因为在跨域请求的时候,外部域的解析可能是localhost、127.0.0.1、主机名(注意:SpringBoot2.4.0之后【allowedOriginsPatterns】代替【allowedOrigins】)
                
                   .allowCredentials(true) // 是否支持跨域用户凭证
    
                   .allowedMethods("GET", "POST", "DELETE", "PUT") // 当前站点支持的跨域请求类型是什么
                .maxAge(3600)
             .allowedHeaders("*");
    ; // 超时时长设置为1小时。 时间单位是秒  } }

    方法三、创建一个filter(过滤器)解决跨域(也支持springMVC)

    @Component
    
    public class SimpleCORSFilter implements Filter {
    
        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-Methods", "POST, GET, OPTIONS, DELETE, HEAD");
    
            response.setHeader("Access-Control-Max-Age", "3600");
    
            response.setHeader("Access-Control-Allow-Headers", "access-control-allow-origin, authority, content-type, version-info, X-Requested-With");
    
            chain.doFilter(req, res);
        }
    
        public void init(FilterConfig filterConfig) {}
    
        public void destroy() {}
    
    }

    四、使用nginx反向代理服务器解决跨域问题

      原文入口

    很好的文章:阮一峰:http://www.ruanyifeng.com/blog/2016/04/cors.html

    一个小小后端的爬行痕迹
  • 相关阅读:
    java-数组
    java-条件判断和循环语句
    java-运算符
    python类与对象
    C#全角半角转换函数
    自己学会汉化DevExpress控件[转]
    DevExpress.XtraGrid的使用(部分)
    .Net 代码安全保护产品DNGuard HVM使用
    DataGridView 添加ComboBox
    c# 使用ChartDirector绘图的一些个人体会
  • 原文地址:https://www.cnblogs.com/heikedeblack/p/14243520.html
Copyright © 2020-2023  润新知