Http POST和GET的区别是什么?
我最近才开始接触PHP/AJAX/jQuery,在我看来,这些技术的一个重要部分是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这
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应该用于发生某些事情的请求
一些例子:
- 获取显示特定SO问题的页面
- 发表评论
- 通过单击“添加到购物车”按钮发送POST请求
- POST和GET是两种。GET通常用于检索一些数据,并且应该是幂等的(重复查询没有任何副作用),并且只能向服务器发送有限数量的参数数据。如果不小心的话,某些浏览器默认情况下会缓存GET请求
POST用于更改服务器状态。它携带更多的数据,重复查询被允许(并且经常被期望)产生副作用,例如创建两条消息而不是一条 使用POST,您还可以进行多部分mime编码,这意味着您也可以附加文件。此外,如果在页面导航中使用post变量,用户将收到一条警告,询问是否要重新提交post参数。通常,它们在HTTP请求中看起来是一样的,但是如果需要将某些内容“发布”到服务器,则应坚持使用POST;如果需要从服务器获取某些内容,则应坚持使用GET,因为这是它们的预期方式。POST和GET之间唯一的“大”区别(与AJAX一起使用时)是因为GET提供了URL,它们的长度是有限的(因为URL的长度不是无限的)。A
POST
,与AGET
不同,通常在请求主体中包含相关信息。(一个GET
不应该有一个主体,所以除了cookie之外,传递信息的唯一地方就是URL。)除了保持URL相对干净外,POST
还可以让你发送更多的信息(因为URL的长度有限,出于所有实际目的),并允许你发送几乎任何类型的数据(例如,文件上传表单不能使用GET
——它们必须使用POST
加上特殊的内容类型/编码)
除此之外,POST
意味着请求将更改某些内容,不应随意重做。这就是为什么有时在点击“后退”按钮时,浏览器会询问您是否要重新提交表单数据的原因
另一方面,
GET
,应该是幂等的——这意味着您可以执行一百万次,服务器每次都会执行相同的操作(并显示基本相同的结果)。虽然没有对差异进行描述,但下面是选择正确方法时需要考虑的几件事情
- GET请求可以通过浏览器缓存,这在使用ajax时可能是一个问题(或好处)
- GET请求向用户公开参数(POST也可以,但它们不太可见)
- POST可以向服务器传递更多信息,并且几乎可以是任意长度
GET
是用于获取数据的…