1. 概念
这是浏览器安全方面的考虑
(1) 出于浏览器的同源策略限制。
同源即相同的主机(host)/域名、端口号(port) 协议(protocol)
当一个请求url的协议、主机(host)/域名、端口三者之间任意一个与当前页面url不同即为跨域
(2) 不同源的资源访问不了
【1】 Cookie、LocalStorage 和 IndexedDB
【2】 DOM
【3】发送 AJAX 请求
(4) 常用的解决方案是CORS
CORS 是跨域资源分享(Cross-Origin Resource Sharing)的缩写。它是 W3C 标准,属于跨源 AJAX 请求的根本解决方法。
1、普通跨域请求:只需服务器端设置Access-Control-Allow-Origin
2、带cookie跨域请求:前后端都需要进行设置
【前端设置】根据xhr.withCredentials字段判断是否带有cookie
【服务端设置】
服务器端对于CORS的支持,主要是通过设置Access-Control-Allow-Origin来进行的。如果浏览器检测到相应的设置,就可以允许Ajax进行跨域的访问。
2. 解决gateway组件跨域问题
方式1:
@Bean
public CorsWebFilter corsFilter() {
CorsConfiguration config = new CorsConfiguration();
config.addAllowedMethod("*");
config.addAllowedOrigin("*");
config.addAllowedHeader("*");
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(new