AJAX中的GET与POST?

问题描述 投票:22回答:9

为什么AJAX中会有GET和POST请求,因为它无论如何都不会影响页面URL?通过将敏感数据传递到AJAX中的GET上有什么区别,因为数据没有反映到页面URL?

ajax http post get
9个回答
41
投票

您应该根据Web服务的要求使用正确的HTTP动词。


[当处理Collection URI时,例如:http://example.com/resources/

GET:列出集合的成员,并带有其成员URI以便进一步导航。例如,列出所有待售汽车。

PUT:定义为“将整个集合替换为另一个集合”。

POST:在集合中创建一个新条目,该ID由该集合自动分配。创建的ID通常包含在此操作返回的数据中。

DELETE:定义为“删除整个集合”。


[当处理Member URI时,例如:http://example.com/resources/7HOU57Y

GET:以适当的MIME类型检索表示集合的已寻址成员的表示形式。

PUT:更新集合的寻址成员或使用指定的ID创建它。

POST:将被寻址成员本身视为一个集合,并为其创建新的从属。

DELETE:删除集合中已寻址的成员。


来源:Wikipedia


18
投票

嗯,对于GET,您仍然具有网址长度限制。除此之外,完全可以想象服务器对POST和GET请求的处理方式不同。因此需要能够指定您正在执行的请求。


9
投票

GETPOST之间的另一个区别是浏览器中处理缓存的方式。 POST响应从不缓存。 GET可能会或可能不会根据您的响应标题中指定的缓存规则进行缓存。


6
投票

拥有它们的两个主要原因:

  1. GET请求在大小上有一些限制性的限制; POST通常能够包含更多信息。

  2. 后端可能期望GETPOST,具体取决于其设计方式。如果后端需要一个GET,那么我们就需要灵活性;如果那是期望的,我们需要POST


6
投票

这完全是遵守http协议的规则。

Get-调用必须是幂等的。这意味着,如果您多次调用它,您将获得相同的结果。它无意更改基础数据。您可以将其用于搜索框等。

Post-调用不是幂等的。允许对基础数据进行更改,因此可以在create方法中使用。如果多次调用,将创建多个条目。


4
投票

您通常将参数发送到AJAX脚本,它会根据这些参数返回数据。它的工作方式类似于具有method =“ get”或method =“ post”的表单。使用GET方法时,参数将在查询字符串中传递。使用POST方法时,参数将在帖子正文中发送。

通常,如果您的参数只有很少的字符并且不包含敏感信息,则可以通过GET方法发送它们。敏感数据(例如密码)或长文本(例如,一个人的8000个字符长的个人简介)最好通过POST方法发送。


1
投票

谢谢我主要将GET方法与Ajax一起使用,到目前为止,除以下内容外,我没有任何问题:

Internet Explorer(与Firefox和Google Chrome不同,如果使用相同的GET值,则缓存GET调用。

因此,除非对每个Ajax GET使用不相关的随机数来更改URL,否则对Ajax GET使用一定的间隔可以显示相同的结果。


0
投票

其他人涵盖了要点(上下文/幂等性和大小),但是我要补充一点:加密。如果您使用的是SSL并想对输入的参数进行加密,则需要使用POST。


0
投票

[当我们在Ajax中使用GET方法时,仅发送字段值的内容,而不发送内容的格式。例如,在使用GET方法的情况下,仅将文本区域中的内容添加到URL中(没有换行符)。 POST方法不是这种情况。

© www.soinside.com 2019 - 2024. All rights reserved.