更新时间:2024-10-28 GMT+08:00

配置HTTP响应头管理策略

ROMA Connect支持通过插件策略的方式,为API提供灵活的扩展能力。HTTP响应头管理策略提供了自定义HTTP响应头的能力,并在API响应中返回自定义的响应头。

插件策略和API本身相互独立,只有为API绑定插件策略后,插件策略才对API生效。为API绑定插件策略时需指定发布环境,插件策略只对指定环境上的API生效。

约束与限制

  • 同一个API在同一个环境中只能绑定一个相同类型的插件策略,已被API绑定的插件策略无法删除。
  • ROMA Connect增加的系统响应头(x-apig-*、x-request-id等)不支持修改。
  • 跨域资源共享(CORS)功能增加的响应头不支持修改。

创建HTTP响应头管理策略

  1. 登录ROMA Connect控制台,在“实例”页面单击实例上的“查看控制台”,进入实例控制台。
  2. 在左侧的导航栏选择“服务集成 APIC > API策略”,在“策略管理”页签下单击“创建策略”。
  3. 在选择策略类型弹窗中选择“插件策略 > HTTP响应头管理”。
  4. 在配置策略弹窗中配置插件策略信息。
    表1 策略配置

    参数

    说明

    策略名称

    填写策略的名称,根据规划自定义。建议您按照一定的命名规则填写策略名称,方便您快速识别和查找。

    策略类型

    固定为“HTTP响应头管理”。

    可见范围

    选择策略的可见范围。

    • 集成应用:策略归属某个集成应用,仅拥有该集成应用权限的用户可查看和使用该策略。
    • 全局:当前实例的所有用户都可查看和使用该策略。

    集成应用

    仅当“可见范围”选择“集成应用”时需要配置。

    选择策略所属的集成应用。若没有可用的集成应用,可单击右侧的“新建集成应用”,创建一个集成应用。

    描述

    填写策略的描述信息。

    策略内容:支持表单模式和脚本模式两种方式,脚本模式配置请参见脚本配置示例

    响应头管理

    单击“添加响应头”,添加自定义响应头。

    说明:

    建议不要设置敏感信息,以防泄露。

    • Name:响应头名称。每个插件中不能添加重复名称的响应头(不区分大小写)。
    • Value:响应头的值。当“Action”为“Delete”时响应头的值不生效,可为空。
    • Action:响应头操作,您可以覆盖、添加、删除、跳过或新增指定的响应头。
      • Override:覆盖

        - 当API响应中存在指定的响应头时,使用当前响应头的值覆盖已有响应头的值。

        - 当API响应中存在多个与指定响应头相同名称的响应头时,只会按当前响应头的值返回一条响应头记录。

        - 当API响应中不存在指定的响应头时,添加当前响应头。

      • Append:添加

        - 当API响应中存在指定的响应头时,将当前响应头的值添加到已有响应头的值之后,值之间用“,”分隔。

        - 当API响应中存在多个与指定响应头相同名称的响应头时,会将多个响应头的值用“,”拼接后,再添加当前响应头的值。

        - 当API响应中不存在指定的响应头时,添加当前响应头。

      • Delete:删除

        - 当API响应中存在指定的响应头时,删除当前响应头。

        - 当API响应中存在多个与指定响应头相同名称的响应头时,删除所有相同名称的响应头。

      • Skip:跳过

        - 当API响应中存在指定的响应头时,跳过当前响应头。

        - 当API响应中存在多个与指定响应头相同名称的响应头时,均不作处理直接返回。

        - 当API响应中不存在指定的响应头时,添加当前响应头。

      • Add:新增

        无论API响应中是否存在指定的响应头,都添加当前响应头。

  5. 单击“确定”,完成插件策略的创建。

    插件策略创建后,您还需要为API绑定插件策略,才能使插件策略对API生效。

为API绑定插件策略

  1. 在“策略管理”页签右上角的过滤条件中选择“HTTP响应头管理”。
  2. 在页面中单击策略的名称,进入策略详情页面。
  3. 在“关联API”下选择要绑定API的环境,然后单击“绑定API”。
  4. 在绑定API弹窗中,勾选要绑定策略的API。

    您可以通过指定API分组和API名称,筛选所需API。

  5. 单击“确定”,完成API与插件策略的绑定。

脚本配置示例

{
  "response_headers": [
    {
      "name": "header1",
      "value": "test",
      "action": "append"
    },
    {
      "name": "header2",
      "value": "roma",
      "action": "override"
    }
  ]
}