grpc_status

Answers proxy-generated errors in the shape gRPC clients expect.

Versions marked “overview” do not contain this page. Selecting one opens that version’s documentation overview.

On this page

Answers proxy-generated errors in the shape gRPC clients expect.

Configuration Notes

gRPC carries a call’s outcome in a grpc-status header on an HTTP 200, not in the HTTP status. When Praxis rejects a call itself — an ACL denial, a missing route, an unreachable upstream — it writes an ordinary HTTP error, which a gRPC client reports as a transport failure with no usable status. This filter marks the request so those errors are emitted as Trailers-Only responses instead: a single header block, no body, with grpc-status mapped from the HTTP status Praxis chose.

Successful short-circuits (a CORS preflight, a static_response) are left as real HTTP responses: only error statuses become gRPC statuses.

Non-gRPC requests are untouched, so a listener can carry mixed traffic.

Configuration

FieldTypeRequiredDescription
content_typeecho | grpcyescontent-type written on the error response.
detectcontent_type | alwaysyesWhich requests get gRPC error responses.
include_messageboolyesWhether to include the proxy’s error text as grpc-message.

Example

filter: grpc_status
detect: content_type    # content_type | always
content_type: echo      # echo | grpc
include_message: true