博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Get vs Post http://blog.teamtreehouse.com/the-definitive-guide-to-get-vs-post
阅读量:5776 次
发布时间:2019-06-18

本文共 3770 字,大约阅读时间需要 12 分钟。

According to :

GET requests a representation of the specified resource. Note that GET should not be used for operations that cause side-effects, such as using it for taking actions in web applications. One reason for this is that GET may be used arbitrarily by robots or crawlers, which should not need to consider the side effects that a request should cause.

and

POST submits data to be processed (e.g., from an HTML form) to the identified resource. The data is included in the body of the request. This may result in the creation of a new resource or the updates of existing resources or both.

So essentially GET is used to retrieve remote data, and POST is used to insert/update remote data.

 


HTTP/1.1 specification (RFC 2616) section 9  contains more information on GET and POST as well as the other HTTP methods, if you are interested.

 

In addition to explaining the intended uses of each method, the spec also provides at least one practical reason for why GET should only be used to retrieve data:

Authors of services which use the HTTP protocol SHOULD NOT use GET based forms for the submission of sensitive data, because this will cause this data to be encoded in the Request-URI. Many existing servers, proxies, and user agents will log the request URI in some place where it might be visible to third parties. Servers can use POST-based form submission instead

 


Finally, an important consideration when using GET for AJAX requests is that some browsers - IE in particular - will cache the results of a GET request. So if you, for example, poll using the same GET request you will always get back the same results, even if the data you are querying is being updated server-side. One way to alleviate this problem is to make the URL unique for each request by appending a timestamp.

 

 

 

 

 

GET (HTTP)

User Rating (546): 
  • current rating is3.91/5

POST (HTTP)

User Rating (599): 
  • current rating is4.35/5
History Parameters remain in browser history because they are part of the URL Parameters are not saved in browser history.
Bookmarked Can be bookmarked. Can not be bookmarked.
BACK button/re-submit behaviour GET requests are re-executed but may not be re-submitted to server if the HTML is stored in the browser cache. The browser usually alerts the user that  will need to be re-submitted.
Encoding type (enctype attribute) application/x-www-form-urlencoded multipart/form-data or application/x-www-form-urlencoded Use multipart encoding for binary data.
Parameters can send but the parameter data is limited to what we can stuff into the request line (URL). Safest to use less than 2K of parameters, some servers handle up to 64K Can send parameters, including uploading files, to the server.
Hacked Easier to hack for script kiddies More difficult to hack
Restrictions on form data type Yes, 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. So it's saved in browser history and server logs in plaintext. POST is a little safer than GET because the parameters are not stored in browser history or in logs.
Restrictions on form data length Yes, since form data is in the URL and URL length is restricted. A safe URL length limit is often 2048 characters but varies by browser and web server. No restrictions
Usability GET method should not be used when sending passwords or other sensitive information. POST method used when sending passwords or other sensitive information.
Visibility GET method is visible to everyone (it will be displayed in the browser's address bar) and has limits on the amount of information to send. POST method variables are not displayed in the URL.
Cached Can be cached Not cached

转载于:https://www.cnblogs.com/derek-hu/p/4763461.html

你可能感兴趣的文章
mysql default unix_timestamp(now())
查看>>
Unity3D的坑系列:动态加载dll
查看>>
android:spinner
查看>>
ubuntu14.04中 gedit 凝视能显示中文,而source insight中显示为乱码的解决的方法
查看>>
Java:IO流其他类(字节数组流、字符数组流、数据流、打印流、Properities、对象流、管道流、随机访问、序列流、字符串读写流)...
查看>>
Kudu1.1.0 、 Kudu1.2.0 Kudu1.3.0的版本信息异同比较
查看>>
TCP通信实现
查看>>
session深入解读
查看>>
利用gcc的__attribute__编译属性section子项构建初始化函数表【转】
查看>>
关于SWT常用组件(按钮,复选框,单选框(Button类))
查看>>
[Android Pro] Android libdvm.so 与 libart.so
查看>>
《响应式web设计》读书笔记(四)HTML5与CSS3
查看>>
[Step By Step]SAP HANA PAL多元指数回归预测分析Multiple Exponential Regression编程实例FORECASTWITHEXPR(预测)...
查看>>
JS魔法堂:mmDeferred源码剖析
查看>>
人不成熟的六大特征
查看>>
从自己的程序中使用lex的一个小例子
查看>>
[安卓][地图] 1、高德或百度地图开发第一步(高手跳过)
查看>>
从阶乘函数对比Javascript和C#函数
查看>>
第 25 章 Build tool
查看>>
thinkphp中的where()方法
查看>>