Ajax请求的GET和POST有什么区别?
我看不出这两者之间有什么区别,除了当我使用GET时,参数是在 URL 中发送的,这对我来说并没有什么区别,因为所有请求都是在后台发出的,而用户没有找到任何不同之处。
编辑:什么是PUT和DELETE方法用于?
GET 是为从服务器获取数据而设计的。POST(以及鲜为人知的朋友 PUT 和 DELETE)是为修改服务器上的数据而设计的。
GET 请求绝不应该导致从应用程序中删除数据。如果你有一个链接,你可以点击一个 GET 来删除数据,然后谷歌爬取你的网站可以点击你所有的“删除”链接。
规范的答案可以在这里找到,它引用了 HTML 2.0 规范:
如果表单的处理是幂等的(即它对世界状态没有持久的可观察影响),那么表单方法应该是 GET。许多数据库搜索没有明显的副作用,是查询表单的理想应用。
如果与处理表单相关的服务有副作用(例如,修改数据库或订阅服务),则方法应该是 POST。
在您的 AJAX 调用中,您需要使用服务器支持的任何方法。您应该始终设计您的服务器,以便通过 POST/PUT/DELETE 调用修改数据的操作。其他评论有指向 REST 的链接,通常将 C/R/U/D 映射到“POST 或 PUT”(创建)/GET(读取)/PUT(更新)/DELETE(删除)。
如果您通过 HTTPS 发送大量数据或敏感数据,您将需要使用 POST。如果它只是一个简单的参数,我会使用 GET。
GET 请求对可以发送的数据量有限制。我忘记了确切的数字,但是如果您发送任何实质性内容,这可能会导致问题。
基本上 GET 和 POST 之间的区别在于,在 GET 请求中,参数在 URL 中传递,而在 POST 中,参数包含在消息正文中。
它的 AJAX 与否无关紧要。它与您正在采取的行动有关。我建议遵循REST的原则。其中对更新,删除等有进一步的规定......
GET 请求更容易在 CSRF(跨站请求伪造)攻击中被利用。即虚假的 POST 请求需要在用户端启用 Javascript,而虚假的 GET 请求仍然可能仅使用 img、script 标签。
许多 Web 服务器限制了可以作为 URL 的一部分传递的数据的长度,因此 GET 请求可能会以难以调试的奇怪方式中断。
此外,大多数服务器软件在访问日志中记录 URL,因此如果您在 GET 请求中传递敏感信息(例如密码),这很可能会以明文形式写入磁盘。
从 REST 的角度来看,GET 请求应该没有副作用——它们不应该修改数据。因此,如果您只是通过 ID 获取资源,这是有道理的,但如果您正在提交对资源的更改,您应该对 http 动词使用 PUT、POST 或 UPDATE。
两者都用于发送一些数据并使用该数据接收一些响应。
GET:获取服务器中的信息存储。IE。搜索、推文、个人信息。如果要发送信息,则使用 process.php?name=subroto 获取请求发送请求所以它基本上通过 url 发送信息。网址不能处理超过 2083 个字符。所以对于博客文章,你能记得这是不可能的吗?
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
首先,一般信息。GET
仅在读取数据时使用,POST
在更改数据库、txt 文件等内容时使用。
但问题是,某些浏览器会缓存GET
结果。我在 IE7 中遇到了AJAX
请求问题,但最后我发现浏览器缓存了GET
结果。我重新考虑了流程并将我的请求更改为POST
.
GET
因此,如果您不想缓存,请不要使用。
(当然你可以在 GET 操作中禁用缓存。但我不喜欢它)
关于我,我更喜欢 POST。我保留访问我知道发送的值仅限于我拥有“控制”的数据的事件,例如,检索具有 id 的项目。例如,“getitem?id=123”、“deleteImtem?id=123”、... 对于其他情况,当我有一个可由用户填写的表单时,我更喜欢 POST。
就像 Ryan Smith 所说的,最好使用 POST 发送大量数据,并且在使用其他语言/特殊字符的情况下少担心(通常所有专业的 javascript 框架应该没有任何问题来处理,但是我认为使用 POST 的担忧更少)。
在我看来,从 REST 角度来看,您可以将其用于新项目(以保持与整个项目的一致性)。
最后,也许网络中使用的一些程序(URL 记录器(即:查看员工是否在非自动化站点上浪费时间,...)代理,...)或任何其他类型的工具可以拦截查询. 有些人会在报告中显示您使用 GET 发送的参数,将其视为不同的网页。但是在这种情况下,可能不是您的问题,而是从一个项目更改为另一个!;)
如果您传递的任何参数包含可能在 URL 中弄乱的字符(例如空格),则使用 POST。否则,您可以使用 GET。
一般来说,如果你只是传递一些小参数,你会使用 GET。但是为了传递用户提交的信息,如博客条目、文本等,使用 POST 是一个很好的做法。
还有一些框架完全依赖基于分段的 url(例如,site.com/products/133
而不是site.com/products.php?id=333
这些框架取消设置 GET 变量以确保安全。在这种情况下,您将始终使用 POST。