描述
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: *