guzzle/guzzle — pull request #491 by danadesrosiers (2013-12-09 03:32:08+00:00)
Title: Fix for 303 Redirects

303 Redirects are required to be executed with a GET request regardless of the method used in the original request. See http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html. Guzzle currently only switches the method to GET for 300-302. This update corrects handling of 303 redirects to always use GET. The strict redirects options has no bearing on this behavior.

The following blog post gives a nice explanation of the various redirect methods, their intended behavior, and what real browsers actually do. http://blogs.msdn.com/b/ieinternals/archive/2011/08/19/understanding-the-impact-of-redirect-response-status-codes-on-http-methods-like-head-get-post-and-delete.aspx