title: HTTP code 301: why and how to allows changing the request method from POST to GET
body: <p>I'm writing a http handling library and now dealing with reduction. I'm a little confused about the response code <code>301</code>, it said that <code>when 301 happens, it is allowed to change the request method from POST to GET</code>.</p>
  <p>Since POST method contains bodies while GET doesn't, how could I resend the original POST request to the new location with GET, without losing bodies?</p>
  <p>And why the protocol allow this changing, any particularly reason?</p>