Get and
Post are two of the ways to request server from a client using Hypertext
Transfer Protocol (HTTP).
Get
Get means retrieving information from server (in format as
defined by the agreement,) identified based on Request-URI.
We may opt for Conditional get Request, where header may
contain If-Modified-Since, If-Match, If-None-Match, or If-Range. This is to
reduce load over the network. So, partial Get is also supported here with range
header.
Important
points to be noted here to choose Get or Post:
1.
As
a general rule, in a typical form submission with METHOD="GET", the
browser constructs a URL by taking the value of the action attribute, appending
a “?” to it, then appending the form data set. The encoding type used in Get
request may be “application/x-www-form-urlencoded”.
2.
GET
requests can be cached. Also, you may bookmark and look into browser history to
retrieve complete request later, but bookmarking and browser history is more of
the client features and vary as per what client you are using to make Get
request.
3.
Please
note, only ASCII characters are allowed while using Get.
4.
You
may not be able to hide sensitive information (query string parameters) and
even if you use https, still the server logs will contain this information. So
for transferring sensitive information Post discussed below is a better choice.
5.
Amount
of information you may pass on to server will be limited in case of Get, URL
length limit is 2083(1024 in certain cases).It is recommended to keep number of
parameters in query string less than 2K, but some servers even handle up to
64K. All in all, you should have a justification like caching or anything like
that to keep url’s so large if you want to stick to Get.
Off the topic, in PHP, you may use QUERY_STRING environment
variable to retrieve the parameters passed in url. You may also use $_GET to
get the array of sent data.
Post
In this data posted is part of message body. This is used
for data submission and caching is not an option here unless the response
includes appropriate Cache-Control or Expires header fields.
Important
points to be noted here to choose Get or Post:
1.
As
a general rule, in a typical form submission with METHOD="POST", a POST request is sent, using the value of the
action attribute and a message created according to the content type specified
by the enctype attribute. The encoding type used in Post request may be “application/x-www-form-urlencoded
or multipart/form-data. Use multipart encoding for binary data”. You may pass
query string parameters in a Post request too, if you wish to.
2.
Typically
caching is not an option here under common scenarios. The most common browsers
don't support bookmarking or history of the complete request.
3.
There
are no restrictions on data type in the Post request. Binary data is also
allowed.
4.
Post
is a little bit safer than Get, since parameters are in message body as a thumb
rule. But in case of Get on https, web travel is equally safe. Still server
logs may be one of the reasons here to switch to Post in case of sensitive
information passed on.
5.
Length
of information posted may be huge in case of Post.
Off the topic, in PHP, you may use $_POST to get the array
of sent data, based on complexity of the data.
References
Conditional
GET Request. (2005). Retrieved February 02, 2016, from
https://ruturajv.wordpress.com/2005/12/27/conditional-get-request/
GET vs
POST. (n.d.). Retrieved February 02, 2016, from
http://www.diffen.com/difference/GET_(HTTP)_vs_POST_(HTTP)
HTTP
Methods: GET vs. POST. (n.d.). Retrieved February 02, 2016, from
http://www.w3schools.com/tags/ref_httpmethods.asp
HTTP/1.1:
Method Definitions. (n.d.). Retrieved February 02, 2016, from https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
Nottingham,
M. (2012, September 24). Caching POST. Retrieved February 02, 2016, from
https://www.mnot.net/blog/2012/09/24/caching_POST
PHP
GET and POST Method. (n.d.). Retrieved February 02, 2016, from
http://www.tutorialspoint.com/php/php_get_post.htm
No comments:
Post a Comment