In my site users can download their files. But files are generated by using PHP. So what's HTTP method should I use for sending request for download as file attachment? GET or POST?
2 Answers
GET is for passively retrieving files, POST is for altering information on the server. This is as seen from the client, it doesn't matter what the server does or doesn't do in the process.
So unless you're altering some server state in the request: GET.

- 510,633
- 85
- 743
- 889
-
What do you mean when you say server state? – Legends Oct 11 '16 at 10:14
-
2Literally the state the server is in (for anything relevant to the behaviour of the application, excluding incidental stuff like caches or logs). If you alter data in the database, that's a *state change*. – deceze Oct 11 '16 at 10:15
-
2There are cases where a `POST` is more desriable - even when the server-states does not change. A `GET` does not have a request body - a `POST` can. So if one is sending large data in the request - and URL parameters are not a good fit i.e. [2K limit](https://stackoverflow.com/a/417184/1218512) - then a `POST` (with its body) may be the only option. – colm.anseo Aug 03 '21 at 20:52
GET
From http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol
GET Requests a representation of the specified resource. Requests using GET should only retrieve data and should have no other effect. (This is also true of some other HTTP methods.)[1] The W3C has published guidance principles on this distinction, saying, "Web application design should be informed by the above principles, but also by the relevant limitations."[11] See safe methods below.
POST Requests that the server accept the entity enclosed in the request as a new subordinate of the web resource identified by the URI. The data POSTed might be, as examples, an annotation for existing resources; a message for a bulletin board, newsgroup, mailing list, or comment thread; a block of data that is the result of submitting a web form to a data-handling process; or an item to add to a database.[12]

- 1,833
- 2
- 20
- 29