The Go standard library HTTP client (net&#x2F;http) changes POST&#x2F;PUT redirects to GET[1] and it&#x27;s super annoying.<p>EDIT: Here&#x27;s the rationale (from [2]):<p>&quot;I think the underlying principle of the matter is that if the client is going to resend the POST request body data, then RFC 2616 wants clients to get the user&#x27;s consent. The trouble is that most client implementations did not resend the POST data when following 301 or 302 redirects. So the principle of getting user consent doesn&#x27;t really apply.<p>RFC 7231 (HTTP&#x2F;1.1 June 2014) changes this. It ratifies the common behavior of 301 and 302 (to not re-POST), and in doing so it leaves it up to the client to determine when it is safe to automatically redirect.&quot;<p>1. <a href="https:&#x2F;&#x2F;github.com&#x2F;golang&#x2F;go&#x2F;blob&#x2F;master&#x2F;src&#x2F;net&#x2F;http&#x2F;client.go#L362-L364" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;golang&#x2F;go&#x2F;blob&#x2F;master&#x2F;src&#x2F;net&#x2F;http&#x2F;client...</a><p>2. <a href="https:&#x2F;&#x2F;github.com&#x2F;golang&#x2F;go&#x2F;issues&#x2F;9348#issuecomment-86790338" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;golang&#x2F;go&#x2F;issues&#x2F;9348#issuecomment-867903...</a>