微服务引擎MSE

跨域CORS插件

2025-05-27 07:55:17

描述

cors 是一个跨域访问插件。

作用范围

该插件即可用于全局插件,也可用于路由级插件。全局插件配置的优先级高于路由级插件配置,当同时在某一路由上配置了cores的全局插件和路由级插件时,以全局插件配置中设置的属性值为准。

属性

名称

类型

必选项

默认值

有效值

描述

allow_origins

string

可选

"*"


允许跨域访问的来源,作用于 Access-Control-Allow-Origin 头部,格式如:scheme://host:port,比如: https://somehost.com:8081

。多个值时使用","分割,不允许携带凭证时可以使用"*"来表示所有Origin均允许通过。

allow_methods

string

可选

"*"


允许跨域访问的方法,作用于 Access-Control-Allow-Methods 头部。多个值时使用","分割,支持“GET,POST,PUT,DELETE,HEAD,OPTIONS,PATCH”等方法。不允许携带凭证时可以使用"*"来表示所有 Method 均允许通过。

allow_headers

string

可选

"*"


允许跨域访问时请求方携带哪些非 CROS 规范以外的 Header,多个值时使用","分割,不允许携带凭证时可以使用"*"来表示所有 Header 均允许通过。

expose_headers

string

可选

"*"


允许跨域访问时响应方携带哪些非 CROS 规范以外的 Header,多个值时使用","分割,不允许携带凭证时可以使用"*"来表示所有 Header 均允许通过。

max_age

integer

可选

5


浏览器缓存   CORS 结果的最大时间,单位为秒,在这个时间范围内浏览器会复用上一次的检查结果,-1 表示不缓存。作用于 Access-Control-Max-Age 头部。

allow_credential

boolean

可选

false


是否允许携带凭证,作用于 Access-Control-Allow-Credentials 头部。

如何启用

在配置窗口页以 YAML 格式填写

配置示例

在服务对象中配置cors插件,此处设置缓存结果的最大时间max_age=600。

curl http://192.168.0.95:27152/apisix/admin/routes/1 -H 'X-API-KEY: 2571e288e8f4cd273cab342440068469' -X PUT -d '> {

 >     "name": "test12",

 >     "uri": "/hello",

 >     "plugins": {

 >         "cors": {

 >             "max_age": 600

 >         }

 >     },

 >     "upstream": {

 >         "type": "roundrobin",

 >         "nodes": {

 >             "127.0.0.1:39087": 1

 >         }

 >     }

 > }'

启用/停用

在配置页面设置生效开关

验证插件

请求接口,发现已返回cors相关的 header,代表插件已经生效。

curl -v http://192.168.0.95:27151/hello -X GET

 ...

 < Server: APISIX/2.13.3

 < Access-Control-Allow-Origin: *

 < Access-Control-Allow-Methods: *

 < Access-Control-Max-Age: 600

 < Access-Control-Expose-Headers: *

 < Access-Control-Allow-Headers: *


XouBz0ZUDyA0