所有回應標頭和附加標頭預設都會從代理回應複製到傳出客戶端回應。 回應和回應預告片轉換可以指定是否只針對成功的回應或所有回應套用。
在程序代碼中,這些實作為抽象類 ResponseTransform 和 ResponseTrailersTransform 的衍生。
回應標頭複製
設定目的地回應標頭是否複製到用戶端
| 鑰匙 | 價值 | 預設 | 為必填項目 |
|---|---|---|---|
| 回應標頭複製 | 真/假 | 是 | 是的 |
設定:
{ "ResponseHeadersCopy": "false" }
程式碼:
routeConfig = routeConfig.WithTransformCopyResponseHeaders(copy: false);
transformBuilderContext.CopyResponseHeaders = false;
此設定決定是否將所有代理伺服器的回應標頭複製到客戶端回應。 預設情況下會啟用此設定,並且可以透過配置一個false值來停用。 即使停用此功能,參考特定標頭的轉換仍會執行。
回應標頭
新增或取代響應標頭
| 鑰匙 | 價值 | 預設 | 為必填項目 |
|---|---|---|---|
| 回應標頭 | 標頭名稱 | (無) | 是的 |
| 設定/附加 | 標頭值 | (無) | 是的 |
| 什麼時候 | 成功/總是/失敗 | 成功 | 否 |
設定:
{
"ResponseHeader": "HeaderName",
"Append": "value",
"When": "Success"
}
程式碼:
routeConfig = routeConfig.WithTransformResponseHeader(headerName: "HeaderName", value: "value", append: true, ResponseCondition.Success);
transformBuilderContext.AddResponseHeader(headerName: "HeaderName", value: "value", append: true, always: ResponseCondition.Success);
範例:
HeaderName: value
這會設定或附加具名回應標頭的值。 Set 會取代任何現有的標頭。 Append 會新增具有指定值的額外標頭。 注意:不建議將 「設定為標頭值,而且可能會導致未定義的行為。
When 會指定回應標頭是否應包含於所有回應、成功或失敗回應中。 任何狀態代碼小於 400 的回應都會被視為成功。
ResponseHeaderRemove (刪除回應標頭)
拿掉回應標頭
| 鑰匙 | 價值 | 預設 | 為必填項目 |
|---|---|---|---|
| 移除回應標頭 | 標頭名稱 | (無) | 是的 |
| 什麼時候 | 成功/總是/失敗 | 成功 | 否 |
設定:
{
"ResponseHeaderRemove": "HeaderName",
"When": "Success"
}
程式碼:
routeConfig = routeConfig.WithTransformResponseHeaderRemove(headerName: "HeaderName", ResponseCondition.Success);
transformBuilderContext.AddResponseHeaderRemove(headerName: "HeaderName", ResponseCondition.Success);
範例:
HeaderName: value
AnotherHeader: another-value
這會移除具名回應標頭。
When 指定是否應該針對所有回應、成功或失敗回應移除響應標頭。 任何狀態代碼小於 400 的回應都會被視為成功。
允許回應標頭
| 鑰匙 | 價值 | 為必填項目 |
|---|---|---|
| 允許回應標頭 | 允許的標頭名稱清單,以分號分隔。 | 是的 |
設定:
{
"ResponseHeadersAllowed": "Header1;header2"
}
程式碼:
routeConfig = routeConfig.WithTransformResponseHeadersAllowed("Header1", "header2");
transformBuilderContext.AddResponseHeadersAllowed("Header1", "header2");
YARP 預設會從 Proxy 回應複製大部分的響應標頭(請參閱 ResponseHeadersCopy)。 某些安全性模型只允許 Proxy 處理特定標頭。 此轉換會停用 ResponseHeadersCopy,而且只會複製指定的標頭。 若未包含在允許清單中,修改或附加至現有標頭的其他轉換可能會受到影響。
請注意,有些標頭欄位 YARP 預設不會複製,因為它們是連線特定或與其他安全性相關的(例如,ConnectionAlt-Svc)。 將這些標頭名稱放在允許清單中將會略過該限制,但強烈建議您不要使用,因為它可能會對 Proxy 的功能造成負面影響,或造成安全性弱點。
範例:
Header1: value1
Header2: value2
AnotherHeader: AnotherValue
只有 header1 和 header2 會從 Proxy 回應複製。
回應標頭複製
設定目的地尾端回應標頭是否複製到用戶端
| 鑰匙 | 價值 | 預設 | 為必填項目 |
|---|---|---|---|
| ResponseTrailersCopy | 真/假 | 是 | 是的 |
設定:
{ "ResponseTrailersCopy": "false" }
程式碼:
routeConfig = routeConfig.WithTransformCopyResponseTrailers(copy: false);
transformBuilderContext.CopyResponseTrailers = false;
這項設定決定是否將所有代理回應的尾端標頭複製到客戶端回應中。 預設情況下會啟用此設定,並且可以透過配置一個false值來停用。 如果此功能被停用,系統仍會執行參考特定標頭的轉換。
ResponseTrailer
新增或取代尾端回應標頭
| 鑰匙 | 價值 | 預設 | 為必填項目 |
|---|---|---|---|
| ResponseTrailer | 標頭名稱 | (無) | 是的 |
| 設定/附加 | 標頭值 | (無) | 是的 |
| 什麼時候 | 成功/總是/失敗 | 成功 | 否 |
設定:
{
"ResponseTrailer": "HeaderName",
"Append": "value",
"When": "Success"
}
程式碼:
routeConfig = routeConfig.WithTransformResponseTrailer(headerName: "HeaderName", value: "value", append: true, ResponseCondition.Success);
transformBuilderContext.AddResponseTrailer(headerName: "HeaderName", value: "value", append: true, ResponseCondition.Success);
範例:
HeaderName: value
回應預告片是在回應本文結尾傳送的標頭。 HTTP/1.1 實作中的預告片支援並不常見,但在 HTTP/2 實作中很常見。 請檢查您的客戶端和伺服器,以取得支援。
ResponseTrailer 遵循與 ResponseHeader 相同的結構和指引。
ResponseTrailerRemove
拿掉尾端回應標頭
| 鑰匙 | 價值 | 預設 | 為必填項目 |
|---|---|---|---|
| ResponseTrailerRemove | 標頭名稱 | (無) | 是的 |
| 什麼時候 | 成功/總是/失敗 | 成功 | 否 |
設定:
{
"ResponseTrailerRemove": "HeaderName",
"When": "Success"
}
程式碼:
routeConfig = routeConfig.WithTransformResponseTrailerRemove(headerName: "HeaderName", ResponseCondition.Success);
transformBuilderContext.AddResponseTrailerRemove(headerName: "HeaderName", ResponseCondition.Success);
範例:
HeaderName: value
AnotherHeader: another-value
這會移除具名尾端標頭。
ResponseTrailerRemove 遵循與 ResponseHeaderRemove 相同的結構和指引。
允許回應尾標
| 鑰匙 | 價值 | 為必填項目 |
|---|---|---|
| 允許回應尾標 | 允許的標頭名稱清單,以分號分隔。 | 是的 |
設定:
{
"ResponseTrailersAllowed": "Header1;header2"
}
程式碼:
routeConfig = routeConfig.WithTransformResponseTrailersAllowed("Header1", "header2");
transformBuilderContext.AddResponseTrailersAllowed("Header1", "header2");
YARP 預設會從 Proxy 回應複製大部分的回應預告片(請參閱 ResponseTrailersCopy)。 某些安全性模型只允許特定標頭被代理處理。 此轉換會停用 ResponseTrailersCopy,而且只會複製指定的標頭。 若未包含在允許清單中,修改或附加至現有標頭的其他轉換可能會受到影響。
請注意,有些標頭欄位 YARP 預設不會複製,因為它們是連線特定或與其他安全性相關的(例如,ConnectionAlt-Svc)。 將這些標頭名稱放在允許清單中將會略過該限制,但強烈建議您不要使用,因為它可能會對 Proxy 的功能造成負面影響,或造成安全性弱點。
範例:
Header1: value1
Header2: value2
AnotherHeader: AnotherValue
只有 header1 和 header2 會從 Proxy 回應複製。