Http POST和GET的区别是什么?

Http POST和GET的区别是什么?,http,post,get,http-method,Http,Post,Get,Http Method,我最近才开始接触PHP/AJAX/jQuery,在我看来,这些技术的一个重要部分是POST和GET 首先,POST和GET之间有什么区别?通过实验,我知道GET将返回的变量及其值附加到URL字符串中 website.com/directory/index.php?name=YourName&bday=YourBday 但是POST没有 那么,这是唯一的区别,还是使用其中一个有具体的规则或约定 其次,我还看到了PHP之外的POST和GET:也在AJAX和jQuery中。POST和GET这

我最近才开始接触PHP/AJAX/jQuery,在我看来,这些技术的一个重要部分是
POST
GET

首先,
POST
GET
之间有什么区别?通过实验,我知道
GET
将返回的变量及其值附加到URL字符串中

website.com/directory/index.php?name=YourName&bday=YourBday
但是
POST
没有

那么,这是唯一的区别,还是使用其中一个有具体的规则或约定


其次,我还看到了PHP之外的
POST
GET
:也在AJAX和jQuery中。
POST
GET
这三者之间有什么区别?它们是相同的想法、相同的功能,只是使用方式不同吗?

GET
POST
是两种不同类型的HTTP请求

根据:

获取指定资源的表示形式的请求。请注意,GET不应用于导致副作用的操作,例如在web应用程序中使用它进行操作。其中一个原因是GET可能被机器人或爬虫随意使用,这不需要考虑请求引起的副作用。 及

POST将要处理的数据(例如,从HTML表单)提交到标识的资源。数据包含在请求正文中。这可能导致创建新资源或更新现有资源,或两者兼而有之

因此本质上,
GET
用于检索远程数据,
POST
用于插入/更新远程数据


HTTP/1.1规范(RFC 2616)第9节包含有关
GET
POST
以及其他HTTP方法的更多信息(如果您感兴趣)

除了解释每种方法的预期用途外,规范还提供了至少一个实际原因,说明为什么
GET
只能用于检索数据:

使用HTTP协议的服务的作者不应使用基于GET的表单提交敏感数据,因为这将导致在请求URI中对这些数据进行编码。许多现有服务器、代理和用户代理将在第三方可能可见的位置记录请求URI。服务器可以使用基于POST的表单提交


最后,在对AJAX请求使用
GET
时,一个重要的考虑因素是一些浏览器(特别是IE浏览器)将缓存
GET
请求的结果。因此,例如,如果您使用相同的
GET
请求进行轮询,您将始终返回相同的结果,即使您查询的数据正在服务器端更新。缓解此问题的一种方法是通过附加时间戳使每个请求的URL都是唯一的。

如果您正在工作,GET应该用于仅获取数据的请求,POST应该用于发生某些事情的请求

一些例子: