Friday, 18 August 2017

Difference between Get and Post Method in MVC



GET method is preferred to be for Read-only actions and Post method for actions that modify/manipulate the data. However, it’s just a best practice and even Get can be used to manipulate data.

The GET Method

It requests data from a specified resource.

Note that the query string (name/value pairs) is sent in the URL of a GET request:
/test/demo_form.aspx?name1=value1&name2=value2
Some other notes on GET requests:
  • GET requests can be cached
  • GET requests remain in the browser history
  • GET requests can be bookmarked
  • GET requests should never be used when dealing with sensitive data
  • GET requests have length restrictions
  • GET requests should be used only to retrieve data

The POST Method

It submits data to be processed to a specified resource.

Note that the query string (name/value pairs) is sent in the HTTP message body of a POST request:
POST /test/demo_form.aspx HTTP/1.1
Host: abc.com
name1=value1&name2=value2
Some other notes on POST requests:
  • POST requests are never cached
  • POST requests do not remain in the browser history
  • POST requests cannot be bookmarked
  • POST requests have no restrictions on data length

GET vs. POST


GET
POST
BACK button/Reload
Harmless
Data will be re-submitted (the browser should alert the user that the data are about to be re-submitted)
Bookmarked
Can be bookmarked
Cannot be bookmarked
Cached
Can be cached
Not cached
Encoding type
application/x-www-form-url encoded
application/x-www-form-url encoded or multipart/form-data. Use multipart encoding for binary data
History
Parameters remain in browser history
Parameters are not saved in browser history
Restrictions on data length
Yes, when sending data, the GET method adds the data to the URL; and the length of a URL is limited (maximum URL length is 2048 characters)
No restrictions
Restrictions on data type
Only ASCII characters allowed
No restrictions. Binary data is also allowed
Security
GET is less secure compared to POST because data sent is part of the URL

Never use GET when sending passwords or other sensitive information!
POST is a little safer than GET because the parameters are not stored in browser history or in web server logs
Visibility
Data is visible to everyone in the URL
Data is not displayed in the URL

No comments:

Post a Comment