464 Incompatible Protocol Versions
AWS load balancer code for a mismatch between the client protocol version and the target group's expected version.
Status
HTTP/1.1 464 Incompatible Protocol Versions
Details
- Category: 4xx
- Status: Unofficial (AWS Elastic Load Balancing). Not registered with IANA. A server, framework, or CDN convention.
- Specification: none, not defined by any RFC
- Cacheable: Not cacheable
- Response body: Allowed
- Retry: Retry only after changing the request
An Application Load Balancer returns 464 when the incoming request protocol does not match what the target group is configured to speak, for example an HTTP/1.1 request routed to a gRPC target group, or HTTP/2 traffic sent to a target expecting HTTP/1.1.
It is a configuration error rather than anything the caller did wrong.
Common causes
- A target group protocol version that does not match the client's protocol.
- gRPC targets receiving plain HTTP/1.1 requests.
How to fix it
As the client
- Use the protocol the endpoint expects. For gRPC that means HTTP/2 with the right content type.
As the server
- Set the target group protocol version to match real client traffic.
- Split incompatible protocols into separate listeners and target groups.
Examples
GET /Service/Method HTTP/1.1 Host: grpc.example.com HTTP/1.1 464