混合使用 GET 和 POST 是一种不好的做法吗? (注意这是在 PHP 中)
例如
<form action="delete.php?l=en&r=homepage" method="post">
<!-- post fields here -->
</form>
最佳答案
实际上,这将向服务器发送一个 POST 请求请求,因此从技术上讲,您不会将两者混合在一起:您使用的是带有 url 参数的 POST。这从根本上没有任何问题,只要您不将 URL 用于应该以隐藏字段形式出现的参数即可。
有一些简单的规则:您对不更改服务器的常量使用 GET(可能带有 URL 参数),对修改服务器的事物使用 POST。如果您的 url 参数包含您要删除的内容的 ID,那么这将是一种不好的做法。
编辑,多年后
我被要求提供源代码,所以这里是 HTTP 规范的相关部分
http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
the convention has been established that the GET and HEAD methods SHOULD NOT have the significance of taking an action other than retrieval. These methods ought to be considered "safe". This allows user agents to represent other methods, such as POST, PUT and DELETE, in a special way, so that the user is made aware of the fact that a possibly unsafe action is being requested.
好了,GET 不应该改变任何东西,POST 是为了改变服务器(不安全操作)。我应该可以多次调用 GET。它不仅仅是幂等的:它应该(尽可能)没有副作用!使用 GET,如果涉及缓存,请求甚至可能无法到达服务器。
是的:您有一个表单,想知道您使用的是 GET 还是 POST?然后更改服务器=> POST,不要更改服务器=> GET。 并且由于可以使用任何动词(get 或 post)访问 URL,因此不要将更改服务器的数据放在 URL 中,因为有人可能会复制该 URL,执行 GET 并在您不知情的情况下更改您的服务器. 想象一下,如果有人在 Facebook 上复制了该 URL,然后 10 000 人开始随机删除内容,会发生什么情况?不好。最近的框架(node、ruby)对此有更好的隔离,但不是基本的 PHP,因此这是该语言的一个很好的经验法则。
关于http - 将 GET 与 POST 混合使用 - 这是一种不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1592418/