gateway层解决跨域问题

跨域问题,主要指的是不同站点之间,使用ajax无法相互调用的问题。这个问题本质上是由浏览器的同源策略造成的,是浏览器对JavaScript施加的一种安全限制。同源策略是由Netscape提出的一个安全策略,是浏览器最核心也是最基本的安全功能。

具体来说,同源指的是协议、域名、端口号都相同,只要这三项数据中有一项不同,那么该资源就将被认为是从不同的Origin得来的,进而不被允许访问。同源策略限制的情况包括:

  1. Cookie、LocalStorage和IndexDB无法读取。
  2. DOM和Js对象无法获得。
  3. AJAX请求不能发送。

在Spring Cloud Gateway层解决跨域问题,通常是通过配置全局CORS(跨源资源共享)策略来实现的。Spring Cloud Gateway允许你配置一个全局的CORS过滤器,该过滤器会应用于所有通过Gateway的请求。

以下是如何在Spring Cloud Gateway中配置CORS的步骤:

  1. 添加依赖
    确保你的Spring Cloud Gateway项目中已经包含了spring-cloud-starter-gateway依赖。

  2. 配置CORS
    application.ymlapplication.properties文件中配置CORS策略,但Spring Cloud Gateway通常使用Java配置类来定义路由和过滤器。

    在Java配置类中,你可以使用CorsWebFilter来定义CORS策略,并将其添加为全局过滤器。以下是一个示例

    import org.springframework.cloud.gateway.filter.GlobalFilter;  
    import org.springframework.context.annotation.Bean;  
    import org.springframework.context.annotation.Configuration;  
    import org.springframework.web.cors.CorsConfiguration;  
    import org.springframework.web.cors.reactive.CorsWebFilter;  
    import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;  
      
    @Configuration  
    public class CorsConfig {  
      
        @Bean  
        public CorsWebFilter corsFilter() {  
            CorsConfiguration config = new CorsConfiguration();  
            config.addAllowedOrigin("*"); // 允许所有来源,或你可以指定具体的来源  
            config.addAllowedMethod("OPTIONS", "GET", "POST", "PUT", "DELETE", "PATCH"); // 允许的方法  
            config.addAllowedHeader("*"); // 允许的头信息  
            config.setAllowCredentials(true); // 是否允许携带凭证  
            config.setMaxAge(3600L); // 预检请求的缓存时间(秒)  
      
            UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();  
            source.registerCorsConfiguration("/**", config); // 对所有路径应用CORS配置  
      
            return new CorsWebFilter(source);  
        }  
      }

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值