跨域问题(....as been blocked by CORS policy)

前端报错信息
在这里插入图片描述

跨越报错的原因

跨域问题(....as been blocked by CORS policy)_第1张图片

跨越流程

跨域会发送2次请求,

  1. 是预检请求, (OPTIONS 方式发送)
  2. 是发送真实请求
    跨域问题(....as been blocked by CORS policy)_第2张图片

跨越解决

方式一:
跨域问题(....as been blocked by CORS policy)_第3张图片

方式二:
跨域问题(....as been blocked by CORS policy)_第4张图片

代码示例:

本人是给网关添加一个过滤器,解决所有的跨域问题(也可以给具体某个服务添加跨域)

@Configuration
public class CorsConfig {
     

    // Spring 为我们提供了一个CorsFiler 我们只需要把他放到容器来即可
    @Bean
    public CorsWebFilter corsWebFilter() {
     
        // 跨域的配置信息   springframework.web.cors.reactive 包下的
        UrlBasedCorsConfigurationSource corsConfigurationSource = new UrlBasedCorsConfigurationSource();

        CorsConfiguration corsConfiguration = new CorsConfiguration();
        // 支持哪些来源的请求
        corsConfiguration.addAllowedOrigin("*");
        // 支持的请求头
        corsConfiguration.addAllowedHeader("*");
        // 支持哪些请求方式
        corsConfiguration.addAllowedMethod("*");
        // 是否允许携带 cookie
        corsConfiguration.setAllowCredentials(true);

        // 注册跨域的配置信息,任意路径下
        corsConfigurationSource.registerCorsConfiguration("/**", corsConfiguration);

        return new CorsWebFilter(corsConfigurationSource);
    }
}

注意:服务端或者网关只能有其中一个配置跨域配置,否则会报错:
在这里插入图片描述

你可能感兴趣的:(故障异常记录)