<p dir="auto">I'm seeing exactly the same problem as described in issue <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="191685106" data-permission-text="Title is private" data-url="https://github.com/pallets/flask/issues/2100" data-hovercard-type="issue" data-hovercard-url="/pallets/flask/issues/2100/hovercard" href="https://github.com/pallets/flask/issues/2100">#2100</a>, which has now been closed without any comment.</p>
<p dir="auto">On sending a second GET to an endoint that has previously received a POST on the same endpoint, Flask prepends the previous POST data to the method of the GET resulting in a Method Not Allowed for that request:</p>
<p dir="auto">The GET page contains a very simple form, with a submit button named action set to value login.</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="127.0.0.1 - - [07/Apr/2022 16:43:00] &quot;GET /login/UOFVq8Wu HTTP/1.1&quot; 200 -
127.0.0.1 - - [07/Apr/2022 16:43:03] &quot;POST /login/UOFVq8Wu HTTP/1.1&quot; 200 -
127.0.0.1 - - [07/Apr/2022 16:43:14] &quot;action=loginGET /login/u4onflQV HTTP/1.1&quot; 405 -"><pre class="notranslate"><code class="notranslate">127.0.0.1 - - [07/Apr/2022 16:43:00] "GET /login/UOFVq8Wu HTTP/1.1" 200 -
127.0.0.1 - - [07/Apr/2022 16:43:03] "POST /login/UOFVq8Wu HTTP/1.1" 200 -
127.0.0.1 - - [07/Apr/2022 16:43:14] "action=loginGET /login/u4onflQV HTTP/1.1" 405 -
</code></pre></div>
<p dir="auto">Environment:</p>
<ul dir="auto">
<li>Python version: 3.10.4</li>
<li>Flask version: 2.1.1</li>
</ul>
<p dir="auto">With the following example:</p>
<div class="highlight highlight-source-python notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="from flask import Flask

app = Flask(__name__)


@app.route('/', methods=['POST'])
def hello_world():
    return 'Hello World!'


if __name__ == '__main__':
    app.run()"><pre class="notranslate"><span class="pl-k">from</span> <span class="pl-s1">flask</span> <span class="pl-k">import</span> <span class="pl-v">Flask</span>

<span class="pl-s1">app</span> <span class="pl-c1">=</span> <span class="pl-v">Flask</span>(<span class="pl-s1">__name__</span>)


<span class="pl-en">@<span class="pl-s1">app</span>.<span class="pl-en">route</span>(<span class="pl-s">'/'</span>, <span class="pl-s1">methods</span><span class="pl-c1">=</span>[<span class="pl-s">'POST'</span>])</span>
<span class="pl-k">def</span> <span class="pl-en">hello_world</span>():
    <span class="pl-k">return</span> <span class="pl-s">'Hello World!'</span>


<span class="pl-k">if</span> <span class="pl-s1">__name__</span> <span class="pl-c1">==</span> <span class="pl-s">'__main__'</span>:
    <span class="pl-s1">app</span>.<span class="pl-en">run</span>()</pre></div>
<p dir="auto">When you set the request body to <code class="notranslate">{}</code> with Postman or any HTTP clients, the first request will return 200, while the second request will return a 405 error response. The log shows the request method is <code class="notranslate">{}POST</code>:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="&quot;{}POST / HTTP/1.1&quot; 405"><pre class="notranslate"><code class="notranslate">"{}POST / HTTP/1.1" 405
</code></pre></div>
<p dir="auto">Notice the request body became the part of the request method.</p>