Title: Support internal redirects with body to support the semantics of 307 redirects
Description:
Envoy today handles internal redirects based on 3xx status codes from upstream clusters. There are a some limitation with this. While it can internally redirect 307s, it will not allow the incoming request to have a body and will fallback to return the 307 to the downstream server. Since 307s mean that the original body and method should be used, it is severely limiting the usage of internal redirect.
Being able to have request with a body and with the ability to handle this through an internal redirect would for example be able to transparently handle cases where functionality has been migrated to a different service. This would also allow other use cases where transparent re-processing in a different service is desired and changing the client to understand the 307 and resubmit is not possible.