http - 将 GET 与 POST 混合使用 - 这是一种不好的做法吗?

标签 http post get header

混合使用 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/

相关文章:

android - Flutter HTTP 服务器 - 在另一个应用程序中提供 Flutter Web 服务

c - 如何使用 NodeMCU 和 enduser_setup 捕获用户的 MAC 地址?

php - 当按下第二个提交按钮时,变量中的值消失

javascript - 如何在一个函数中从 2 个 api 获取数据并在对话框流卡履行中显示

performance - 批量 HTTP 请求性能提升

java - 为什么 PoolingHttpClientConnectionManager 提供越来越慢的连接?

php - cURL无法完全模拟HTTP Post

php - 使用 cURL 登录,然后使用 cURL 发出另一个请求

java - 如何从 URLConnection 中删除 header

c# - 使用 Url.action 或类似工具时控制日期格式