We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
http: request method or response status code does not allow body
It seems that body is not written only on 204: https://github.com/go-kit/kit/blob/master/transport/http/server.go#L177
However, stdlib defines "no body allowed" as 100-199, 204, 304: https://cs.opensource.google/go/go/+/refs/tags/go1.22.3:src/net/http/transfer.go;l=460
No error.
Got an error.
The text was updated successfully, but these errors were encountered:
Oops. Seems like a simple PR to fix.
Sorry, something went wrong.
Using this fix myself:
func EncodeJSONResponse(_ context.Context, w http.ResponseWriter, response any) error { w.Header().Set("Content-Type", "application/json; charset=utf-8") if headerer, ok := response.(http.Headerer); ok { for k, values := range headerer.Headers() { for _, v := range values { w.Header().Add(k, v) } } } code := http.StatusOK if sc, ok := response.(http.StatusCoder); ok { code = sc.StatusCode() } w.WriteHeader(code) if !bodyAllowedForStatus(code) { return nil } return json.NewEncoder(w).Encode(response) } // bodyAllowedForStatus reports whether a given response status code // permits a body. See RFC 7230, section 3.3. // forked from net/http/transfer.go func bodyAllowedForStatus(status int) bool { switch { case status >= 100 && status <= 199: return false case status == 204: return false case status == 304: return false } return true }
Fixed EncodeJSONResponse body writing go-kit#1291
0cdcd43
4b24982
Successfully merging a pull request may close this issue.
What did you do?
http: request method or response status code does not allow body
It seems that body is not written only on 204: https://github.com/go-kit/kit/blob/master/transport/http/server.go#L177
However, stdlib defines "no body allowed" as 100-199, 204, 304: https://cs.opensource.google/go/go/+/refs/tags/go1.22.3:src/net/http/transfer.go;l=460
What did you expect?
No error.
What happened instead?
Got an error.
The text was updated successfully, but these errors were encountered: