為何 Envoy 使用 X-Forwarded-Proto 而非 :scheme,反之亦然?

在幾乎所有請求中,X-Forwarded-Proto 標頭的值與 :scheme 標頭(如果存在)的值會相同。一般而言,使用者會透過 TLS 連線請求 https:// 資源,並以明文請求 http:// 資源。然而,使用者完全有可能透過 TLS 連線請求 http:// 內容,或在內部網格中以明文轉發 https:// 請求。在這些情況下,Envoy 會嘗試在使用內容時使用 :scheme 標頭(例如根據 URL scheme 從快取中提供給定的實體),而在執行與底層加密相關的操作時使用 X-Forwarded-Proto 標頭(根據請求是否為 port 443 上的 TLS,或是 port 80 上的明文來移除預設 port)。