Gateway解决跨域请求
Access-Control-Allow-Origin
: 支持哪些来源的请求跨域Access-Control-Allow-Method
: 支持那些方法跨域Access-Control-Allow-Credentials
:跨域请求默认不包含cookie,设置为true可以包含cookieAccess-Control-Expose-Headers
: 跨域请求暴露的字段- CORS请求时,
XMLHttpRequest
对象的getResponseHeader()
方法只能拿到6个基本字段:
Cache-Control
、Content-Language
、Content-Type
、Expires
、Last-Modified
、Pragma
如果想拿到其他字段,就必须在Access-Control-Expose-Headers
里面指定。
- CORS请求时,
Access-Control-Max-Age
:表明该响应的有效时间为多少秒。在有效时间内,浏览器无须为同一请求再次发起预检请求。请注意,浏览器自身维护了一个最大有效时间,如果该首部字段的值超过了最大有效时间,将失效。
方式一:配置类
@Configuration
public class GulimallCorsConfiguration {
@Bean
public CorsWebFilter corsWebFilter(){
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration corsConfiguration= new CorsConfiguration();
//1、配置跨域
// 允许跨域的头
corsConfiguration.addAllowedHeader("*");
// 允许跨域的请求方式
corsConfiguration.addAllowedMethod("*");
// 允许跨域的请求来源
corsConfiguration.addAllowedOrigin("*");
// 是否允许携带cookie跨域
corsConfiguration.setAllowCredentials(true);
// 任意url都要进行跨域配置
source.registerCorsConfiguration("/**",corsConfiguration);
return new CorsWebFilter(source);
}
}
方式二: 配置文件
spring:
cloud:
gateway:
# .........
globalcors: # 全局的跨域处理
add-to-simple-url-handler-mapping: true # 解决options请求被拦截问题
corsConfigurations:
'[/**]':
allowedOrigins: # 允许哪些网站的跨域请求
- "http://localhost:8090"
allowedMethods: # 允许的跨域ajax的请求方式
- "GET"
- "POST"
- "DELETE"
- "PUT"
- "OPTIONS"
allowedHeaders: "*" # 允许在请求中携带的头信息
allowCredentials: true # 是否允许携带cookie
maxAge: 360000 # 这次跨域检测的有效期
评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果