在處理HTTP/1.1請求時,Envoy默認會將請求與響應的頭部的Key都轉化為小寫,這對于一些依賴頭部大小寫的應用產生了很大影響。PreserveCase
插件在啟用后,能夠讓網關與Sidecar保持其轉發的請求/響應頭部的大小寫,以解決頭部大小寫敏感應用的服務網格依賴問題。
前提條件
已部署入口網關。具體操作,請參見創建入口網關。
已在數據面集群部署httpbin服務。具體操作,請參見部署httpbin應用。
配置字段
名稱 | 數據類型 | 填寫要求 | 默認值 | 描述 |
request_or_response | string | 必填 | - | 該參數指定了要保留請求頭還是響應頭的大小寫,有三個可能取值:
|
配置示例
在示例的環境中訪問httpbin服務,可以發現返回的響應頭都為小寫。對于一些依賴響應頭大小寫的應用,服務網格的這一默認行為可能造成嚴重的兼容性影響。
$ curl -I {網關ip地址}/get
HTTP/1.1 200 OK
server: istio-envoy
date: Thu, 16 Jun 2022 07:54:10 GMT
content-type: application/json
content-length: 504
access-control-allow-origin: *
access-control-allow-credentials: true
x-envoy-upstream-service-time: 2
此時所有的響應頭都為小寫。
啟用PreserveCase
插件,并配置以下參數,以保持網關和Sidecar代理的請求響應頭的大小寫。
request_or_response: RESPONSE_HEADER
選擇插件的生效范圍為全局生效,并再次進行測試:
$ curl -I {網關ip地址}/get
HTTP/1.1 200 OK
Server: istio-envoy
Date: Thu, 16 Jun 2022 11:28:43 GMT
Content-Type: application/json
Content-Length: 507
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
x-envoy-upstream-service-time: 8
可以發現,在插件生效后,Date
、Content-Type
、Content-Length
等響應頭都恢復了原先的大小寫形式,而沒有被強制轉換成小寫。
文檔內容是否對您有幫助?