将自定义 header 添加到 Azure Service Fabric 上来自 Traefik 的所有响应

Add custom header to all responses from Traefik on Azure's Service Fabric

我已经在 Azure Service Fabric 集群上部署了 Traefik。一切正常,就像在 Traefik 中一样(使用 SFC 的 API)查找其他访客服务并动态创建前端和后端配置文件。所以我没有静态配置任何前端。

有没有办法告诉 Traefik 为来自所有前端的所有响应添加自定义 header?

Traefik 有一个自定义 header 功能,用于匹配前端规则,如 here.

所述

每个规则应用自定义 header...

Custom headers can be configured through the frontends, to add headers to either requests or responses that match the frontend's rules

因为你使用的是动态配置,所以你需要将这些规则添加到服务中,而不是在traeffik配置中设置。

类似于:

<StatelessServiceType ServiceTypeName="WebServiceType">
  <Extensions>
      <Extension Name="Traefik">
        <Labels xmlns="http://schemas.microsoft.com/2015/03/fabact-no-schema">
          <Label Key="traefik.frontend.rule.example2">PathPrefixStrip: /a/path/to/strip</Label>
          <Label Key="traefik.enable">true</Label>
          <Label Key="traefik.frontend.headers.customRequestHeaders">heaver:value</Label>
        </Labels>
      </Extension>
  </Extensions>
</StatelessServiceType>

据我所知,无法以全局方式应用于所有响应。

已接受答案中建议的 XML 不适用于 SFC 上动态发现的服务。但是我确实接受了它,因为它指出可以通过 APIs.

完成

为了其他人的利益,要调用 API,可以使用 "sfctl"(Service Fabric 的 CLI)或直接使用 cUrl 调用 API。

我无法让 CLI 工作 (https://github.com/Microsoft/service-fabric-cli/issues/175),但我使用 cUrl 成功了:

curl -kv -X PUT -H 'Content-Type: application/json' -d '{"PropertyName": "traefik.frontend.headers.customResponseHeaders","Value": {"Kind": "String","Data": "Access-Control-Allow-Origin: https://some_value"}}' --cert /Users/me/client_cert.crt --key /Users/me/client_cert.key https://****.westus2.cloudapp.azure.com:19080/Names/full/service/name/$/GetProperty?api-version=6.0 --http1.1

参考:https://docs.microsoft.com/en-us/rest/api/servicefabric/sfclient-api-putproperty