Overview#HTTP 301 Moved Permanently redirect HTTP Status Code indicates that the resource requested has been definitively moved to the URL given by the Location headers.
Even if the specification requires the method (and the body) not to be altered when the redirection is performed, not all User-agents align with it - you can still find this type of bugged software out there. It is therefore recommended to use the HTTP 301 only as a response for HTTP GET or HTTP HEAD methods and to use the HTTP 308 Permanent Redirect for HTTP POST methods instead, as the method change is explicitly prohibited with this status.
Browsers will also permanently cache a HTTP 301 redirect. This is important in terms of HTTPS because it ensures the same request for an insecure URL issued at a later date is sent securely before being sent over the wire.