GET
POST
是两种不同类型的 HTTP 请求。
根据维基百科:
GET请求指定资源的表示。请注意,GET 不应用于会导致副作用的操作,例如在 Web 应用程序中使用它来执行操作。这样做的一个原因是 GET 可能被机器人或爬虫任意使用,它们不需要考虑请求应该引起的副作用。
和
POST将要处理的数据(例如,来自 HTML 表单)提交给识别的资源。数据包含在请求的正文中。这可能导致创建新资源或更新现有资源或两者兼而有之。
所以本质上GET
是用于检索远程数据,并POST
用于插入/更新远程数据。
HTTP/1.1 规范 (RFC 2616) 第 9 节
方法定义包含有关其他 HTTP 方法
GET
以及
POST
其他 HTTP 方法的更多信息,如果您感兴趣的话。
除了解释每种方法的预期用途之外,该规范还提供了至少一个实际原因,说明为什么GET
只能用于检索数据:
使用 HTTP 协议的服务的作者不应该使用基于 GET 的表单来提交敏感数据,因为这将导致该数据被编码在 Request-URI 中。许多现有的服务器、代理和用户代理会将请求 URI 记录在第三方可能看到的某个地方。服务器可以改用基于 POST 的表单提交
最后,用于 AJAX 请求时的一个重要考虑因素
GET
是某些浏览器 - 特别是 IE - 将缓存
GET
请求的结果。因此,例如,如果您使用相同的
GET
请求进行轮询,您将始终得到相同的结果,即使您正在查询的数据正在服务器端更新。缓解此问题的一种方法是通过附加时间戳使每个请求的 URL 唯一。