跨域问题处理

x33g5p2x  于2021-11-11 转载在 其他  
字(1.1k)|赞(0)|评价(0)|浏览(155)

一 为什么有跨域问题

跨域不一定都会有跨域问题。

因为跨域问题是浏览器对于 ajax 请求的一种安全限制:一个页面发起的 ajax 请求,只能是与当前页域名相同的路径,这能有效的阻止跨站攻击。

因此:跨域问题是针对 ajax 的一种限制。

但是这却给我们的开发带来了不便,而且在实际生产环境中,肯定会有很多台服务器之间交互,地址和端口都可能不同,需要解决。

二 解决方案

1 增加全局配置类

package com.baiyee.sdgt.config;

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;
import org.springframework.web.util.pattern.PathPatternParser;

@Configuration
public class CorsConfig {
    @Bean
    public CorsWebFilter corsFilter() {
        CorsConfiguration config = new CorsConfiguration();
        config.addAllowedMethod("*");
        config.addAllowedOrigin("*");
        config.addAllowedHeader("*");
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(new PathPatternParser());
        source.registerCorsConfiguration("/**", config);
        return new CorsWebFilter(source);
    }
}

2 将在 controller 类上添加过 @CrossOrigin 标签的去掉,防止程序异常

目前我们已经在网关做了跨域处理,那么 service 服务就不需要再做跨域处理了。

三 前后端联调

相关文章