YARP — Transform Response và Response Trailer
Tất cả header response và trailer đều được sao chép từ response được proxy sang response của client theo mặc định. Các transform response và response trailer có thể chỉ định liệu chúng có nên được áp dụng chỉ cho response thành công hay cho tất cả response.
Trong code, chúng được triển khai dưới dạng các lớp kế thừa từ các lớp trừu tượng ResponseTransform và ResponseTrailersTransform.
ResponseHeadersCopy
Đặt có sao chép header response từ đích sang client hay không
| Key | Value | Mặc định | Bắt buộc |
|---|---|---|---|
| ResponseHeadersCopy | true/false | true | có |
Cấu hình:
{ "ResponseHeadersCopy": "false" }Code:
routeConfig = routeConfig.WithTransformCopyResponseHeaders(copy: false);
transformBuilderContext.CopyResponseHeaders = false;
Đặt xem có sao chép tất cả header proxy response sang client response không. Cài đặt này được bật mặc định và có thể tắt bằng cách cấu hình transform với giá trị false. Các transform tham chiếu đến header cụ thể vẫn sẽ chạy nếu cài đặt này bị tắt.
ResponseHeader
Thêm hoặc thay thế header response
| Key | Value | Mặc định | Bắt buộc |
|---|---|---|---|
| ResponseHeader | Tên header | (none) | có |
| Set/Append | Giá trị header | (none) | có |
| When | Success/Always/Failure | Success | không |
Cấu hình:
{
"ResponseHeader": "HeaderName",
"Append": "value",
"When": "Success"
}Code:
routeConfig = routeConfig.WithTransformResponseHeader(
headerName: "HeaderName", value: "value", append: true, ResponseCondition.Success);transformBuilderContext.AddResponseHeader(
headerName: "HeaderName", value: "value", append: true, always: ResponseCondition.Success);Ví dụ:
HeaderName: value
Transform này đặt hoặc nối thêm giá trị cho header response được đặt tên. Set thay thế bất kỳ header hiện có nào. Append thêm một header bổ sung với giá trị đã cho. Lưu ý: đặt "" làm giá trị header không được khuyến nghị và có thể gây ra hành vi không xác định.
When chỉ định nếu header response nên được bao gồm cho tất cả, thành công, hoặc response thất bại. Bất kỳ response nào có mã trạng thái nhỏ hơn 400 đều được coi là thành công.
ResponseHeaderRemove
Xóa header response
| Key | Value | Mặc định | Bắt buộc |
|---|---|---|---|
| ResponseHeaderRemove | Tên header | (none) | có |
| When | Success/Always/Failure | Success | không |
Cấu hình:
{
"ResponseHeaderRemove": "HeaderName",
"When": "Success"
}Code:
routeConfig = routeConfig.WithTransformResponseHeaderRemove(
headerName: "HeaderName", ResponseCondition.Success);transformBuilderContext.AddResponseHeaderRemove(
headerName: "HeaderName", ResponseCondition.Success);Transform này xóa header response có tên được chỉ định.
When chỉ định nếu header response nên được xóa cho tất cả, thành công, hoặc response thất bại.
ResponseHeadersAllowed
| Key | Value | Bắt buộc |
|---|---|---|
| ResponseHeadersAllowed | Danh sách tên header được phép, phân tách bằng dấu chấm phẩy. | có |
Cấu hình:
{
"ResponseHeadersAllowed": "Header1;header2"
}Code:
routeConfig = routeConfig.WithTransformResponseHeadersAllowed("Header1", "header2");transformBuilderContext.AddResponseHeadersAllowed("Header1", "header2");YARP sao chép hầu hết header response từ proxy response theo mặc định (xem ResponseHeadersCopy). Một số mô hình bảo mật chỉ cho phép proxy các header cụ thể. Transform này tắt ResponseHeadersCopy và chỉ sao chép các header được chỉ định.
Lưu ý rằng có một số header YARP không sao chép mặc định vì chúng đặc thù cho kết nối hoặc nhạy cảm về bảo mật (ví dụ Connection, Alt-Svc). Việc đặt những tên header đó vào danh sách cho phép rất không được khuyến khích.
Ví dụ: chỉ header1 và header2 được sao chép từ proxy response.
ResponseTrailersCopy
Đặt có sao chép trailing header response từ đích sang client hay không
| Key | Value | Mặc định | Bắt buộc |
|---|---|---|---|
| ResponseTrailersCopy | true/false | true | có |
Cấu hình:
{ "ResponseTrailersCopy": "false" }Code:
routeConfig = routeConfig.WithTransformCopyResponseTrailers(copy: false);
transformBuilderContext.CopyResponseTrailers = false;
Đặt xem có sao chép tất cả proxy response trailer sang client response không. Cài đặt này được bật mặc định và có thể tắt bằng cách cấu hình transform với giá trị false.
ResponseTrailer
Thêm hoặc thay thế trailing response header
| Key | Value | Mặc định | Bắt buộc |
|---|---|---|---|
| ResponseTrailer | Tên header | (none) | có |
| Set/Append | Giá trị header | (none) | có |
| When | Success/Always/Failure | Success | không |
Cấu hình:
{
"ResponseTrailer": "HeaderName",
"Append": "value",
"When": "Success"
}Code:
routeConfig = routeConfig.WithTransformResponseTrailer(
headerName: "HeaderName", value: "value", append: true, ResponseCondition.Success);transformBuilderContext.AddResponseTrailer(
headerName: "HeaderName", value: "value", append: true, ResponseCondition.Success);Ví dụ:
HeaderName: value
Response trailer (trailer phản hồi) là các header được gửi ở cuối body response. Hỗ trợ trailer không phổ biến trong các triển khai HTTP/1.1 nhưng đang trở nên phổ biến trong các triển khai HTTP/2.
ResponseTrailer theo cùng cấu trúc và hướng dẫn như ResponseHeader.
ResponseTrailerRemove
Xóa trailing response header
| Key | Value | Mặc định | Bắt buộc |
|---|---|---|---|
| ResponseTrailerRemove | Tên header | (none) | có |
| When | Success/Always/Failure | Success | không |
Cấu hình:
{
"ResponseTrailerRemove": "HeaderName",
"When": "Success"
}Code:
routeConfig = routeConfig.WithTransformResponseTrailerRemove(headerName: "HeaderName", ResponseCondition.Success);
transformBuilderContext.AddResponseTrailerRemove(headerName: "HeaderName", ResponseCondition.Success);
Transform này xóa trailing header được đặt tên.
ResponseTrailerRemove theo cùng cấu trúc và hướng dẫn như ResponseHeaderRemove.
ResponseTrailersAllowed
| Key | Value | Bắt buộc |
|---|---|---|
| ResponseTrailersAllowed | Danh sách tên header được phép, phân tách bằng dấu chấm phẩy. | có |
Cấu hình:
{
"ResponseTrailersAllowed": "Header1;header2"
}Code:
routeConfig = routeConfig.WithTransformResponseTrailersAllowed("Header1", "header2");transformBuilderContext.AddResponseTrailersAllowed("Header1", "header2");YARP sao chép hầu hết response trailer từ proxy response theo mặc định (xem ResponseTrailersCopy). Transform này tắt ResponseTrailersCopy và chỉ sao chép các header được chỉ định.
Lưu ý rằng có một số header YARP không sao chép mặc định vì chúng đặc thù cho kết nối hoặc nhạy cảm về bảo mật. Việc đặt những tên header đó vào danh sách cho phép rất không được khuyến khích.
Ví dụ: chỉ header1 và header2 được sao chép từ proxy response.