配置跨域资源共享策略

跨域资源共享CORS(Cross-Origin Resource Sharing)是一项重要的安全策略,允许Web应用服务器进行跨域访问控制,从而实现跨域数据安全传输。云原生API网关支持在路由级别配置跨域策略,您可以根据自身需求,只允许必要的域名和请求方法访问资源,从而防止跨站点请求伪造等安全风险,确保服务的可靠性和安全性。

配置跨域策略

  1. 登录云原生API网关控制台

  2. 在左侧导航栏,选择API管理,并在顶部菜单栏选择地域。

  3. 单击目标API,在API详情页面,单击目标路由名称。选择策略配置页签,然后单击跨域

    说明

    跨域对于Mock服务不生效,请配置一个真实的后端测试服务。

    在跨域策略列表中设置相关配置项,然后单击下方的保存

    配置项

    描述

    开启

    打开开启右侧的开关。

    • 开启:开启跨域策略后,您的服务器资源允许被设置的第三方源站通过浏览器进行跨域访问。

    • 关闭:关闭跨域策略后,您的服务器资源禁止被任意第三方源站通过浏览器进行跨域访问。

    允许的访问来源

    设置允许通过浏览器访问服务器资源的站点。参数输入规则如下:

    • 允许所有的访问来源:*

    • 允许指定根域名的访问来源:*.example.com

    • 允许多个具体的访问来源:以http://https://开头,并且以回车分隔。

    说明

    该参数作用于Access-Control-Allow-Origin头部。当客户端请求的Origin头部匹配上任意您设置的允许的访问来源,跨域响应的Access-Control-Allow-Origin将会被设置为客户端请求的Origin头部。

    允许的方法

    选择跨域访问时允许的HTTP方法。常见的方法有GETPOSTPUTDELETEHEADOPTIONSPATCH

    说明

    该参数作用于Access-Control-Allow-Methods头部。

    允许的请求头部

    除了浏览器内置的基础Header,设置跨域访问时允许的Header。参数输入规则如下:

    • 允许所有的请求头部:*

    • 允许多个具体的请求头部:输入具体的请求头部,并以回车分隔。

    说明

    该参数作用于Access-Control-Allow-Headers头部。

    允许的响应头部

    允许浏览器、JavaScript脚本访问的响应头部。参数输入规则如下:

    • 允许所有的响应头部:*

    • 允许多个具体的响应头部:输入具体的响应头部,并以回车分隔。

    说明

    该参数作用于Access-Control-Expose-Headers头部。

    允许携带凭证

    跨域访问时是否允许携带凭证信息。

    说明

    该参数作用于Access-Control-Allow-Credentials头部。

    预检的过期时间

    对于非简单请求,设置OPTIONS预检请求在浏览器的最大缓存时间。

    说明

    该参数作用于Access-Control-Max-Age头部。

结果验证

  • 执行以下测试请求命令:

    curl -I -H "Origin: http://example.com" -H 'Host: www.test.com' -X OPTIONS http://121.196.XX.XX/demo/item/list
  • 响应结果:

    HTTP/1.1 200 OK
    allow: GET,HEAD,OPTIONS
    x-content-type-options: nosniff
    x-xss-protection: 1; mode=block
    cache-control: no-cache, no-store, max-age=0, must-revalidate
    pragma: no-cache
    expires: 0
    x-frame-options: DENY
    content-length: 0
    date: Tue, 30 Nov 2021 03:20:31 GMT
    x-envoy-upstream-service-time: 6
    access-control-allow-origin: http://example.com
    access-control-allow-credentials: true
    access-control-expose-headers: *
    server: istio-envoy

相关文档

关于跨域的更多信息,请参见跨域资源共享(CORS)