一、为什么会出现跨域问题
出于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol),主机(host)和端口号(port)。
- 跨域示例:
域名:https://www.xinyues.com/index.html(默认80端口)
同源:https://www.xinyues.com/find.html(协议、域名、端口均相同)
不同源:http://www.xinyues.com/index.html(https 和 http,协议不同)
https://www.xinyues12.com/index.html(hao123 和 hao123456.com,域名不同)
https://www.xinyues.com:8090/index.html(80 和 8090,端口不同)
二,服务端跨域配置
在Spring Cloud Gateway中配置跨域是非常简单的,如下面application.yml
所示:
spring:
cloud:
gateway:
globalcors:
corsConfigurations:
'[/**]':
allowedOrigins: "http://www.xinyues.com"
allowedMethods:
- GET
当服务启动的时候,跨域配置信息会存储在GlobalCorsProperties
的corsConfigurations
映射中,key是 /**
,value是CorsConfiguration的对象。上面的配置表示允许来自http://www.xinhues.com
的Get请求访问此网关。