据我所知,有三种类型:
不要使用GET和POST 不要使用POST而使用GET 你用哪一个都不重要。
我对这三种情况的假设正确吗?如果有,每个案例都有哪些例子?
据我所知,有三种类型:
不要使用GET和POST 不要使用POST而使用GET 你用哪一个都不重要。
我对这三种情况的假设正确吗?如果有,每个案例都有哪些例子?
当前回答
我不认为使用get有什么问题,我用它来做一些简单的事情,在查询字符串上保留东西是有意义的。
使用它来更新状态-像delete.php的GET ?Id =5删除一个页面是非常危险的。人们发现,当谷歌的网络加速器开始在页面上预取url时,它会击中所有的“删除”链接,并清除人们的数据。同样的事情也会发生在搜索引擎蜘蛛身上。
其他回答
没有什么是你本身做不到的。关键在于您不应该修改HTTP GET上的服务器状态。HTTP代理假设由于HTTP GET不修改状态,那么用户调用HTTP GET一次还是1000次没有区别。使用这些信息,他们认为返回第一个HTTP GET的缓存版本是安全的。如果你破坏了HTTP规范,你就有破坏HTTP客户端和代理的风险。不要这样做:)
在PHP中,POST数据限制通常由PHP .ini设置。GET受到服务器/浏览器设置的限制——通常在255字节左右。
短的版本
GET:通常用于已提交的搜索请求,或者任何您希望用户能够再次调出确切页面的请求。
GET的优点:
url可以安全地添加书签。 页面可以安全地重新加载。
GET的缺点:
变量作为名称-值对通过url传递。(安全风险) 可以传递的变量数量有限。(基于浏览器。例如,Internet Explorer被限制为2048个字符。)
POST:用于更高安全性的请求,其中数据可能用于更改数据库,或者您不希望别人添加书签的页面。
POST的优点:
url中不显示名称-值对。(安全+= 1) 可以通过POST传递无限数量的名称-值对。参考。
POST的缺点:
使用POST数据的页面不能被书签。(如果你愿意的话。)
完整版
直接来自超文本传输协议——HTTP/1.1:
9.3 GET The GET method means retrieve whatever information (in the form of an entity) is identified by the Request-URI. If the Request-URI refers to a data-producing process, it is the produced data which shall be returned as the entity in the response and not the source text of the process, unless that text happens to be the output of the process. The semantics of the GET method change to a "conditional GET" if the request message includes an If-Modified-Since, If-Unmodified-Since, If-Match, If-None-Match, or If-Range header field. A conditional GET method requests that the entity be transferred only under the circumstances described by the conditional header field(s). The conditional GET method is intended to reduce unnecessary network usage by allowing cached entities to be refreshed without requiring multiple requests or transferring data already held by the client. The semantics of the GET method change to a "partial GET" if the request message includes a Range header field. A partial GET requests that only part of the entity be transferred, as described in section 14.35. The partial GET method is intended to reduce unnecessary network usage by allowing partially-retrieved entities to be completed without transferring data already held by the client. The response to a GET request is cacheable if and only if it meets the requirements for HTTP caching described in section 13. See section 15.1.3 for security considerations when used for forms. 9.5 POST The POST method is used to request that the origin server accept the entity enclosed in the request as a new subordinate of the resource identified by the Request-URI in the Request-Line. POST is designed to allow a uniform method to cover the following functions: Annotation of existing resources; Posting a message to a bulletin board, newsgroup, mailing list, or similar group of articles; Providing a block of data, such as the result of submitting a form, to a data-handling process; Extending a database through an append operation. The actual function performed by the POST method is determined by the server and is usually dependent on the Request-URI. The posted entity is subordinate to that URI in the same way that a file is subordinate to a directory containing it, a news article is subordinate to a newsgroup to which it is posted, or a record is subordinate to a database. The action performed by the POST method might not result in a resource that can be identified by a URI. In this case, either 200 (OK) or 204 (No Content) is the appropriate response status, depending on whether or not the response includes an entity that describes the result.
重要的一点是,你通过GET提交的任何东西都会通过URL被暴露。其次,正如Ceejayoz所说,URL的字符数量是有限制的。
一个实际的区别是浏览器和网络服务器对URL中可以存在的字符数量有限制。每个应用程序都不一样,但如果你的表单中有文本区域,它肯定是可以达到的。
get的另一个问题是,它们会被搜索引擎和其他自动系统索引。谷歌曾经有一个产品,它可以在你正在浏览的页面上预取链接,所以如果你点击这些链接,它们会更快地加载。它对那些有delete.php之类链接的网站造成了严重破坏。Id =1 -人们失去了他们的整个网站。