跨域请求官方文档说明: https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS
起因:js同源策略
只要协议,域名,端口,任意一项不同就属于跨域请求
对比的是地址栏的URL与ajx请求的URL
简单请求:官方文档有详细说明
非简单请求:会发送预检请求(OPTIONS请求,问服务器是否允许跨域)
nginx配置
Gateway配置(其实是SpringBoot配置)
@Configuration
public class CorsConfig {
/**
* springBoot 提供的解决跨域的Bean CorsWebFilter
*
* @return
*/
@Bean
public CorsWebFilter corsWebFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration config = new CorsConfiguration();
//1.配置跨域
//允许那些请求头可以跨域
config.addAllowedHeader("*");
//允许那些请求方式get,post,put,delete
config.addAllowedMethod("*");
//允许那些域名可以跨域
config.addAllowedOrigin("*");
//允许携带cookie跨域
config.setAllowCredentials(true);
source.registerCorsConfiguration("/**",config);
return new CorsWebFilter(source);
}
}
或者