transport: Make error-handling for bad HTTP method consistent between HTTP/2 server transport and handler server transport #6989
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This tweaks
transport.NewServerHandlerTransport
so that it behaves more like the normal HTTP/2 transport returned bytransport.NewServerTransport
with regard to requests with the wrong HTTP method. In particular, it now sends back a 405 Method Not Allowed status code and correctly sets anAllow
response header.I've also moved the HTTP version check to after we've confirmed that this is a gRPC request (via content-type check) and changed that to also use a more appropriate HTTP status code: 505 HTTP Version Not Supported. (This is not really related to consistency since the other transport never has to worry about HTTP 1.1 requests. But it makes the checks a little more coherent since IMO it seems more appropriate to reject the HTTP version only once we've confirmed that it's a gRPC request.)
RELEASE NOTES:
grpc.Server
as anhttp.Handler
with the Go stdlib HTTP server.