1.3.3. 在路由中设置或删除 HTTP 请求和响应标头
出于合规的原因,您可以设置或删除某些 HTTP 请求和响应标头。您可以为 Ingress Controller 提供的所有路由或特定路由设置或删除这些标头。
例如,如果内容使用多种语言编写,您可能希望让 Web 应用程序在备用位置提供内容,即使 Ingress Controller 为路由指定的默认全局位置。
以下流程会创建一个设置 Content-Location HTTP 请求标头的路由,以便与应用程序关联的 URL https://app.example.com 定向到位置 https://app.example.com/lang/en-us。将应用程序流量定向到此位置意味着使用该特定路由的任何人都可以访问以美国英语编写的 Web 内容。
先决条件
-
已安装 OpenShift CLI(
oc)。 - 以项目管理员身份登录到 Red Hat OpenShift Service on AWS 集群。
- 您有一个 web 应用来公开端口,以及侦听端口流量的 HTTP 或 TLS 端点。
流程
创建一个路由定义,并将它保存到名为
app-example-route.yaml的文件中:使用 HTTP 标头指令创建路由的 YAML 定义
apiVersion: route.openshift.io/v1 kind: Route # ... spec: host: app.example.com tls: termination: edge to: kind: Service name: app-example httpHeaders: actions: response: - name: Content-Location action: type: Set set: value: /lang/en-us # ...其中:
操作- 指定您要对 HTTP 标头执行的操作列表。
响应- 指定您要更改的标头类型。在本例中,响应标头。
response.name- 指定要更改的标头的名称。有关您可以设置或删除的可用标头列表,请参阅 HTTP 标头配置。
action.type-
指定在标头中执行的操作类型。此字段可以具有
Set或Delete的值。 set.value-
在设置 HTTP 标头时,您必须提供一个
value。该值可以是该标头的可用指令列表中的字符串,如DENY,也可以是使用 HAProxy 的动态值语法来解释的动态值。在这种情况下,该值被设置为内容的相对位置。
使用新创建的路由定义,创建到现有 Web 应用程序的路由:
$ oc -n app-example create -f app-example-route.yaml对于 HTTP 请求标头,路由定义中指定的操作会在 Ingress Controller 中对 HTTP 请求标头执行的任何操作后执行。这意味着,路由中这些请求标头设置的任何值都将优先于 Ingress Controller 中设置的值。有关 HTTP 标头处理顺序的更多信息,请参阅 HTTP 标头配置。