据我所知,GET可以做什么,POST也可以实现.那么为什么在定义HTTP协议时首先需要GET.如果GET仅用于获取资源,则人们仍然可以通过在URL中发送参数值来更新资源.为什么这个漏洞?或者在服务器端进行编码以在GET请求上更新资源的人编写了错误的代码?
Gum*_*mbo 13
HTTP为不同目的指定了不同的方法.的GET方法旨在被用来"检索的任何信息(以一个实体的形式)由Request-URI中确定的".特别是,它旨在成为一种安全且有效的方法.这意味着GET请求不应该有副作用(即更改数据):
特别是,已经建立了这样的惯例:GET和HEAD方法不应该具有采取除检索之外的动作的重要性.
并且多次发送相同的请求会导致与仅发送一次相同的请求:
方法也可以具有"幂等"的属性(除了错误或到期问题)N> 0个相同请求的副作用与单个请求相同.方法GET,HEAD,PUT和DELETE共享此属性.
实际上,没有浏览器通过单击链接(不拦截JavaScript中的click事件)来实现POSTing,也不会为POST数据添加书签.此外,语义上POST和GET用于不同的目的.一种是将数据发布到应用程序,另一种是从应用程序中获取数据.这些语义具有实际意义,但它们也具有与应用程序设计质量相关的理论设计含义:不能与POST处理GET的应用程序可能存在大量安全问题和工作流错误.