zoukankan      html  css  js  c++  java
  • Springboot统一跨域配置

    前言:跨域是什么?

    要知道跨域的概念,我们先明确怎样算是同一个域:

    同一个域指的是同一协议,同一ip,同一端口

    如果这三同中有一者不同就产生了跨域。

    在做前后端分离的项目中,通过ajax请求后台端口时,跨域是不可避免的

    例如:

    我启动node.js前端服务通过html访问后台接口

    这里的端口不一致就会出现下面跨域失败的错误

    CORS解决跨域问题

    CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。

    基本上目前所有的浏览器都实现了CORS标准,其实目前几乎所有的浏览器ajax请求都是基于CORS机制的,只不过可能平时前端开发人员并不关心而已(所以说其实现在CORS解决方案主要是考虑后台该如何实现的问题)   

     我们在java中的实现就是写一个过滤器来设置允许跨域的源、头部和方法

    代码如下:

    /**
     * 跨域配置
     */
    @Configuration
    public class CorsConfig {
      // 设置允许跨域的源
      private static String[] originsVal = new String[]{
          "127.0.0.1:8080",
          "localhost:8080",
          "google.com"
      };
    
      /**
       * 跨域过滤器
       *
       * @return
       */
      @Bean
      public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        this.addAllowedOrigins(corsConfiguration);
        corsConfiguration.addAllowedHeader("*");
        corsConfiguration.addAllowedMethod("*");
        corsConfiguration.addAllowedOrigin("*");
        source.registerCorsConfiguration("/**", corsConfiguration);
        return new CorsFilter(source);
      }
    
      private void addAllowedOrigins(CorsConfiguration corsConfiguration) {
        for (String origin : originsVal) {
          corsConfiguration.addAllowedOrigin("http://" + origin);
          corsConfiguration.addAllowedOrigin("https://" + origin);
        }
      }
    }

    写完这个配置类之后重启服务器就可以看到页面正常显示了

    附录


     

    扩展资料:

  • 相关阅读:
    Leetcode 1349 参加考试的最大学生数
    卡特兰数小结
    Leetcode 76 最小覆盖字串 (滑动窗口)
    Leetcode 5331.跳跃游戏
    实现对properties文件的有序读写
    Android日志框架darks-logs使用教程
    Android入门-Service-start,end,bind,unbind之间的区别
    Android实用代码七段(一)
    [转帖]自动调整TextView字体大小以适应文字长度
    apk,task,android:process与android:sharedUserId的区别
  • 原文地址:https://www.cnblogs.com/wutongshu-master/p/10948366.html
Copyright © 2011-2022 走看看