为什么Go http.Client中的POST请求不遵循301重定向?

I'm building a test tool with Go. This tool can retrieve a specific URL by doing a POST request to an endpoint which returns a 303 with the Location to test. Sometimes this location itself is redirected with a 301 which I want to follow as well.

Test tool -> POST /get-url-to-test -> 303 Location: /other -> GET /other -> 301 Location: /new-other (stops here because initial request is POST)

As we can see in Go's source (lines 241 to 257), it seems like GET requests follow 301 redirects, but not POST requests: http://golang.org/src/net/http/client.go

Why is that? Is that part of an HTTP spec? Is this an decision that was made by the Go community?

The reason I'm asking is because in my case, I'd have to manually do a new GET request to get to the URL redirected to by /other, I think.


EDIT 1: I made a mistake before: the /other resource is being fetched by Go with a GET request. But since it returns a 301 and the initial request was a POST, Go stops redirecting on the 301. That seems odd. Am I missing something?

EDIT 2: This may be a bug, I've opened an issue on Github: https://github.com/golang/go/issues/9348

The HTTP RFC 2616 says:

10.3 Redirection 3xx

This class of status code indicates that further action needs to be taken by the user agent in order to fulfill the request. The action required MAY be carried out by the user agent without interaction with the user if and only if the method used in the second request is GET or HEAD.