<p dir="auto">A POST request changed to GET request when  the Request object got 3xx answer from server.</p>
<p dir="auto">I don't know the RFC exactly, but the expected result would be that request repeat as POST at new URL.</p>
<p dir="auto">Here is the code:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="r = requests.post(&quot;http://foobar.com/script&quot;, data={'foo': 'bar'})"><pre class="notranslate"><code class="notranslate">r = requests.post("http://foobar.com/script", data={'foo': 'bar'})
</code></pre></div>
<p dir="auto">The server answer:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="HTTP/1.1 302 Found
Date: Thu, 15 Feb 2018 10:42:16 GMT
Server: Apache/2.4.25 (Debian)
Location: https://foobar.com/script
Content-Length: 222
Content-Type: text/html; charset=iso-8859-1

&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML 2.0//EN&quot;&gt;
&lt;html&gt;&lt;head&gt;"><pre class="notranslate"><code class="notranslate">HTTP/1.1 302 Found
Date: Thu, 15 Feb 2018 10:42:16 GMT
Server: Apache/2.4.25 (Debian)
Location: https://foobar.com/script
Content-Length: 222
Content-Type: text/html; charset=iso-8859-1

&lt;!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"&gt;
&lt;html&gt;&lt;head&gt;
</code></pre></div>
<p dir="auto">Then Request repeats the request as GET.</p>
<p dir="auto">Debian Linux 9.3<br>
Python3 (3.5.3)<br>
Apache2.4 (the server where Request sends the request)</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="&gt;&gt;&gt; requests.__version__
'2.12.4'"><pre class="notranslate"><code class="notranslate">&gt;&gt;&gt; requests.__version__
'2.12.4'
</code></pre></div>
<p dir="auto">I've changed the url to https schema, then it works.</p>
<p dir="auto">Summary.<br>
Basically HTTP 301 redirection replaces POST method with a GET.<br>
More Info: <a href="https://softwareengineering.stackexchange.com/questions/99894/why-doesnt-http-have-post-redirect" rel="nofollow">https://softwareengineering.stackexchange.com/questions/99894/why-doesnt-http-have-post-redirect</a><br>
Need an config option in python requests to override this behavior and follow redirect method after http redirection.</p>
<p dir="auto">Thanks<br>
Raja</p>