【问题标题】:Why are there multiple HTTP Methods available?为什么有多种 HTTP 方法可用?
【发布时间】:2019-11-19 12:00:24
【问题描述】:
当我第一次开始开发需要使用 HTTP 将数据发送到服务器的客户端/服务器应用程序时,我对 HTTP 方法非常陌生。我真的对一切都使用了 GET 请求。
后来我了解到我应该使用 POST 发送数据并使用 GET 请求数据,但是,我对为什么这是最佳实践感到有些困惑。从功能的角度来看,我能够使用 GET 或 POST 来实现完全相同的目标。
为什么使用特定的 HTTP 方法而不是对所有事情都使用相同的方法很重要?
我知道 POST 比 GET 更安全(GET 使数据在 HTTP URL 中可见)但是,我们不能只对所有内容都使用 POST 吗?
【问题讨论】:
标签:
ajax
http
post
methods
get
【解决方案1】:
我将尝试简短地回答这个问题。
GET 用于读取信息。这是“默认”方法,所有内容都使用它从一个链接跳转到下一个链接。这包括浏览器,但也包括爬虫。
GET 是“安全的”。这意味着,如果您执行GET 请求,则可以保证您永远不会更改服务器上的某些内容。如果GET 请求可能会导致服务器上的某些内容被删除,这可能会造成很大的问题,因为蜘蛛/爬虫/搜索引擎可能会认为以下链接是安全的并自动删除内容。
这就是为什么我们有几种不同的方法。 GET 旨在让您从服务器“获取”东西。同样,PUT 允许您在服务器上设置新内容,DELETE 允许您删除某些内容。
POST最大的初衷就是提交表单。您正在向服务器发布一个表单并要求服务器对该表单执行一些操作。
任何客户端(人类/浏览器或机器/爬虫)都知道POST 是“不安全的”。它不会代表您自动执行POST 请求,除非它真的知道这是您(用户)想要的。它也用于类似于提交表单之类的事情。
因此,当您设计网站时,请确保使用 GET 仅用于从服务器获取内容,如果您的 ajax 请求会导致服务器上的“某些内容”发生变化,请使用 POST。
有趣的事实:有a lot 的官方 HTTP 方法。至少 30 个。不过,您可能只会使用其中的一小部分。
所以要更准确地回答标题中的问题:
为什么有多种 HTTP 方法可用?
不同的 HTTP 方法有不同的规则和限制。如果每个人都同意这些规则,我们就可以开始对意图是什么做出假设。由于存在这些保证,HTTP 服务器、客户端和代理可以在不了解您的特定应用程序的情况下做出明智的决策。