一、為什么會出現跨域問題
出於瀏覽器的同源策略限制。同源策略(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請求訪問此網關。