This is not an answer in itself, but I always see similar questions that come down to a fundamental misunderstanding or misunderstanding of how HTTP works. This is not criticism, many web developers believe that all they need to know is HTML, JavaScript and CSS to create a website, but they neglect the need to understand the platform on which their code runs. Look at it this way: you won’t sit down and start writing an application without understanding the target platform (Windows, Mac, iOS, Android, etc.). You must know how everyone handles memory, garbage collection, storage, etc., in order to write anything that could be anything.
The same applies to the network. It is a distributed platform, but a platform nonetheless, and it is important to understand how the underlying structure works. Obviously, I will not dwell on this here in detail. There are whole volumes on HTTP and related technologies. For more information, I highly recommend compiling something like O'Reilly HTTP: the ultimate guide .
As for your problem here, HTTP implements various "verbs", the most common of which are GET and POST. Simply put, GET is a non-volatile request for the returned resource, while POST is volatile (changes will be made, resources will be deleted, etc.). There is no body request with GET. A request can consist of various parts, a URL, headers and a body. In POST, the published data will be the body of the request, but GET has no data and, therefore, is not the object of the request. Now, again, we speak here simplistically. You may wonder about querystring. Will it be "published data"? Technically, yes, it can be, but again, technically, anything in the URL (or if we really want to be exact, a URI) is part of the identifying data for an existing resource. For example, if you do a search on Google, your search query will be added to the URI for the search results page. This is the published data (you sent the request), but this is not only data, but also the URI with the query string gives the location of the resource corresponding to this exact request. Someone who entered the same request will be sent to the same URL.
This was a little tangent, but it’s important to understand that a query is not a way to transmit unrelated data. This line is part of the URI, so the exact page loaded by two different requests are two completely different resources.
Upon transition, redirection is not a special type of request (in the sense of being represented by another HTTP verb); it’s just an instruction for the client’s browser to issue another GET request to the specified URL. You do not control which verb is used: it is always GET. Thus, you can not miss anything for the trip. If you have objects that will be represented by a redirected URI, then, obviously, you will pass the identification information necessary to obtain them (id, slug, etc.), Using either the URI path and / or the sequence of requests. If any data is not directly related to the presented resource, this data should go to some other type of storage system, such as a session.