对于 Ajax 请求, GET 和 POST 之间有什么区别?
我认为这两者之间没有任何区别,只是当我使用 GET 时,参数会在URL中发送,这对我来说并没有什么不同,因为所有请求都是在背景上制作,用户没有发现任何差异。
编辑: 什么是 PUT 和 DELETE 用于?
的方法答案 0 :(得分:131)
GET旨在从服务器获取数据。 POST(以及鲜为人知的朋友PUT和DELETE)用于修改服务器上的数据。
GET请求绝不应导致从应用程序中删除数据。如果您有链接,可以点击GET删除数据,然后Google抓取您的网站可以点击所有“删除”链接。
可以找到规范的答案here,它引用了HTML 2.0规范:
如果表格的处理是幂等的(即它没有持久性 对状态的可观察效果 世界),然后形式方法应该是 得到。许多数据库搜索没有 可见的副作用,使理想 查询表格的应用。
如果与表单处理相关联的服务有副作用 (例如,修改一个 数据库或订阅 服务),方法应该是POST。
在AJAX调用中,您需要使用服务器支持的任何方法。您应始终设计服务器,以便POST / PUT / DELETE调用修改数据的操作。其他评论有REST链接,通常将C / R / U / D映射到“POST或PUT”(创建)/ GET(读取)/ PUT(更新)/删除(删除)。
答案 1 :(得分:24)
如果您通过HTTPS发送大量数据或敏感数据,则需要使用POST。如果它只是一个简单的参数,我会使用GET。
GET请求对可以发送的数据量有限制。我忘记了确切的数字,但如果您发送任何实质内容,这可能会导致问题。
基本上GET和POST之间的区别在于,在GET请求中,参数在URL中传递,而在POST中,参数包含在消息体中。
答案 2 :(得分:19)
它的AJAX是否无关紧要。关于你正在采取的行动。我建议遵循REST的原则。其中有更新,删除等的进一步规定......
答案 3 :(得分:4)
在CSRF(跨站点请求伪造)攻击中更容易利用GET请求。即假的POST请求需要在用户端启用Javascript,而使用img脚本标记仍然可以使用伪GET请求。
答案 4 :(得分:3)
许多Web服务器限制了可以作为URL的一部分传递的数据的长度,因此GET请求可能会以难以调试的奇怪方式中断。
此外,大多数服务器软件都会在访问日志中记录URL,因此如果您在GET请求中传递敏感信息(例如密码),则很可能会以明文形式写入磁盘。
从REST的角度来看,GET请求应该没有副作用 - 它们不应该修改数据。所以,如果您只是通过ID获取资源,这是有道理的,但如果您要对资源进行更改,则应该对http动词使用PUT,POST或UPDATE。
答案 5 :(得分:2)
两者都用于发送一些数据并使用该数据接收一些响应。
获取:获取服务器中的信息存储。 IE浏览器。搜索,推特,人员信息。如果要发送信息,请使用process.php?name = subroto获取请求发送请求 所以它基本上通过url发送信息。网址无法处理超过2083个字符。那么对于博客文章你能记住它是不可能的吗?
POST:Post做同样的事情。用户注册,用户登录,大数据发送,博客帖子。 如果您需要发送安全信息,请使用post或大数据,因为它不通过url。
AJAX:$ .get()和$ .post()包含$ .ajax()子集的功能。它有很多配置。
$。get()方法,这是$ .Ajax()的一种简写。使用$ .get()时,不是传入对象,而是传入参数。至少,您需要前两个参数,即您要检索的文件的URL(即“test.txt”)和成功回调。
要点:
$.get( url [, data ] [, success ] [, dataType ] )
$.post( url [, data ] [, success ] [, dataType ] ) // for sending secure or Large information
$.ajax( url [, settings ] ) // More Configaration
答案 6 :(得分:1)
关于我,我更喜欢POST。我保留得到的事件,我知道发送的值仅限于具有“控制”的数据,例如,用ID来检索项目。例如,“getitem?id = 123”,“deleteImtem?id = 123”,...对于其他情况,当我有一个用户可填写的表格时,我更喜欢POST。
像瑞安史密斯所说的那样,最好使用POST来发送大量数据,而在其他语言/特殊字符中使用的情况则更少(通常所有主要的javascript框架都不应该有任何问题需要处理有了这个,但我认为使用POST不太谨慎。对于REST透视图,在我看来,您可以将它与新项目一起使用(以保持与整个项目的一致性)。
最后,也许在网络中使用一些程序(URL loguers(即:查看员工是否在非自动化网站上丢失了时间,......)代理,...)或任何其他类型的工具可以拦截查询。有些人会在报告中显示您使用GET发送的params,将其视为不同的网页。但在这种情况下,可能不是你的问题,它从项目变为另一个! ;)
答案 7 :(得分:1)
首先,一般信息。如果您只读取数据,请使用GET
,如果您更改数据库,txt文件等内容,请使用POST
。
但问题是,某些浏览器会缓存GET
个结果。我在IE7中遇到了AJAX
个请求的问题,但最后我发现浏览器会缓存GET
个结果。我重新考虑了流程并将我的请求更改为POST
。
因此,如果您不想缓存,请不要使用GET
。
(当然你可以在GET操作中禁用缓存。但我并不喜欢它)
答案 8 :(得分:0)
答案 9 :(得分:-2)
如果要传递任何带有可能在URL中混乱的字符的参数(例如空格),则使用POST。否则你可以使用GET。
通常情况下,如果您只是传递一些小参数,那么您将使用GET。但是,为了传递用户提交的信息,如博客条目,文本等,使用POST是一个很好的做法。
还有一些框架完全依赖基于段的URL(例如site.com/products/133
而不是site.com/products.php?id=333
,并且这些框架取消了GET变量的安全性。在这种情况下,你会使用POST allt time