2019-07-18 微服务跨域问题

跨域出现的原因:
1.域名不同
2.端口不同
3.二级域名不同
4.协议不同 http,https

跨域问题只针对ajax请求,ajax请求的路径与当前页面的路径不同 ,防止跨站攻击

解决方法
1.jsonp 缺点:只能解决get请求
2.nginx 反向代理 缺点:额外配置,不符合devops(开发运维)思想
3.cors 缺点:多发请求(预检疫请求)

cors:跨域资源共享
ajax 底层 XMLHttpRequest

简单请求 head get post

特殊请求 put 会先发送一个预检疫请求,判断路径访问是否成功

使用cors解决
在gateway中配置

@Configuration
public class WtcCorsConfiguration {

    @Bean
  //重写过滤器方法
    public CorsFilter corsFilter(){
        //初始化配置
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        //如果携带cookie不能为*
        //一般为申请的域名
        corsConfiguration.addAllowedOrigin("*");
        //是否允许携带cookie
        corsConfiguration.setAllowCredentials(false);
        //允许所有请求方法
        corsConfiguration.addAllowedMethod("*");
        //允许携带任何请求头
        corsConfiguration.addAllowedHeader("*");
        //初始化配置源
        UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource();
        urlBasedCorsConfigurationSource.registerCorsConfiguration("/**",corsConfiguration);
        return new CorsFilter(urlBasedCorsConfigurationSource);
    }
}

你可能感兴趣的:(2019-07-18 微服务跨域问题)