# CORS 跨域说明

CORS,Cross-Origin Resource Sharing,跨域资源共享,是一种允许当前域的资源(被其他域的脚本请求访问的机制。

为了安全,浏览器中启用了一种称为同源策略的安全机制,禁止从一个域名页面中请求另一个域名下的资源。

当两个请求的访问协议、域名与端口号三者都相同时,才称它们是同源的。只要有一个不同,就称为跨源请求。

举例

源地址 跨源 请求结果
http://sports.com/ https://news.com 拒绝
http://sports.com/ http://sports.com/ 通过
http://sports:8080.com/ http://sports:9000.com/ 拒绝

# 解决方案

# 全局配置

spring:
  cloud:
    gateway:
      globalcors:
        cors-configurations:
          # 所有请求
          '[/**]':
            # 允许的域名
            allowedOrigins: "https://docs.spring.io","*"
              # 允许的方法
            allowedMethods:
              - GET

# 局部配置

spring:
  cloud:
    gateway:
      routes:
      - id: cors_route
        uri: https://example.org
        predicates:
        - Path=/service/**
        metadata:
          cors:
            allowedOrigins: '*'
            allowedMethods:
              - GET
              - POST
            allowedHeaders: '*'
            maxAge: 30