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