浏览器访问renren-fast站点,获取验证码:
1、http://localhost:88/api/captcha.jpg?uuid=4a495edf-6df1-4371-89cc-0828903517wz
2、http://localhost:8080/renren-fast/captcha.jpg?uuid=4a495edf-6df1-4371-89cc-0828903517rr
都可以得到验证码,第一个是gateway地址进行了转换,实际是转换2进行访问。
用vue登录页http://localhost:8001/#/login来访问也可以。
☆ 有一个疑问,为什么用vue登录页获取验证码的请求,实际也属于跨域请求,由地址http://localhost:8001/#/login 来访问http://localhost:8080/renren-fast/captcha.jpg?uuid=4a495edf-6df1-4371-89cc-0828903517rr
为什么可以访问成功?因为是GET方式请求吗,这个以后要研究问题所在?
开始我以为是renren-fast有跨域配置,但我屏蔽掉以后还是可以访问。
☆☆ 网管项目的跨域配置文件:
@Configuration
public class MymallmallCorsConfiguration {
@Bean
public CorsWebFilter corsWebFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration corsConfiguration = new CorsConfiguration();
//1、配置跨域
corsConfiguration.addAllowedHeader("*");
corsConfiguration.addAllowedMethod("*");
corsConfiguration.addAllowedOrigin("*");
corsConfiguration.setAllowCredentials(true);
source.registerCorsConfiguration("/**",corsConfiguration);
return new CorsWebFilter(source);
}
}
☆☆ renren-fast项目自身的跨域配置,在整个的mymall项目中被屏蔽,只保留网关中的一份,
@Configuration
public class CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowCredentials(true)
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
.maxAge(3600);
}
// 允许跨域的响应头配置统一放在网管的配置文件中
}