在AJAX中为什么会存在GET和POST请求?即使它不影响页面URL,通过GET在AJAX中传递敏感数据有何区别,因为数据并未反映到页面URL中?
在AJAX中为什么会存在GET和POST请求?即使它不影响页面URL,通过GET在AJAX中传递敏感数据有何区别,因为数据并未反映到页面URL中?
根据您对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:删除集合的寻址成员。
来源:维基百科
对于GET请求而言,仍然存在URL长度限制。除此之外,服务器可能会针对POST和GET请求进行不同的处理;因此需要能够指定所做的请求。
GET
和 POST
之间的另一个区别是浏览器处理缓存的方式。浏览器不会缓存 POST
响应,但是根据响应头中指定的缓存规则,GET
可能会被缓存。
有两个主要原因需要它们:
GET
请求对大小有一些限制;而 POST
则通常可以包含更多信息。
后端可能期望使用 GET
或 POST
,这取决于其设计方式。如果后端期望使用 GET
,我们需要灵活地执行 GET
请求,如果期望使用 POST
,我们也需要相应地执行 POST
请求。
这只是关于遵守HTTP协议规则的简单介绍。
Get请求 - 调用必须是幂等的。这意味着,如果您多次调用它,将获得相同的结果。它不旨在更改基础数据。您可以在搜索框等场景下使用它。
Post请求 - 调用不是幂等的。允许对基础数据进行更改,因此可能会在创建方法中使用。如果您多次调用它,将创建多个条目。
GET
)施加了重要的限制,HTTP规范也是如此。你能否提供一个参考来证明它们没有这样做? - T.J. Crowder谢谢。
我主要使用Ajax的GET方法,直到现在都没有遇到任何问题,除了以下情况:
与Firefox和Google Chrome不同,Internet Explorer会缓存GET调用,如果使用相同的GET值。
因此,使用一些间隔时间进行Ajax GET可能会显示相同的结果,除非您为每个Ajax GET使用无关的随机数更改URL。
其他人已经涵盖了主要的点(上下文/幂等性和大小),但我会再加一个:加密。如果您正在使用SSL并希望加密输入参数,则需要使用POST。