当前位置:  开发笔记 > 前端 > 正文

通过POST请求使用GET请求有什么好处?

如何解决《通过POST请求使用GET请求有什么好处?》经验,为你挑选了6个好方法。

我过去的几个ajax应用程序都使用了GET请求,但现在我开始使用POST请求了.POST请求似乎稍微更安全,绝对更友好/漂亮.因此,我想知道为什么我应该使用GET请求.



1> Edward Z. Ya..:

我通常会这样设置问题:请求后有什么重要的变化吗?(尽管记录等).如果是,则应该是POST请求,如果不是,则应该是GET请求.

我很高兴您将POST请求称为"稍微"更安全,因为这几乎就是它们的原因; 伪造用户对页面的POST请求是微不足道的.但是,将其作为POST请求会阻止Web加速器或重新加载意外地重新触发操作.

作为AJAX,还有一个考虑因素:如果您使用回调支持返回JSON,请务必小心不要放置任何您不希望其他网站能够在其中看到的敏感数据.维基百科在这些行中存在漏洞,其中用户反CSRF令牌通过其JSON API显示.


不幸的是,这似乎无法回答问题。“`使用GET请求比使用POST请求有什么优势?`“`,我想知道是否有任何理由让我完全使用GET请求。

2> MarkR..:

你应该在你正在做一个没有副作用的请求的地方使用GET,例如只是获取一些信息.此请求可以:

重复没有任何问题 - 如果浏览器检测到错误,它可以静默重试

将其结果缓存在浏览器中

由代理缓存

这些都很好.任何只检索数据(特别是公共数据)的东西都应该是GET.服务器应发送合理的Last-Modified:和Expires:标头,以便在需要时允许缓存.



3> jvenema..:

然而,在回答问题的所有优点中,GET请求在POST请求的某些场景中更有用:

    它们可以加入书签

    它们可以缓存

    他们更快

    它们具有已知的后果(假设它们不会更改数据),因此多次访问它们不是问题.

为了后人的缘故,用博客笔记更新此评论re:点#3在这里,所有信用都归Omar AL Zabir(引用博客文章的作者):

"默认情况下,Atlas为所有AJAX调用提供HTTP POST .Http POST比Http GET更昂贵.它通过线路传输更多字节,因此占用了宝贵的网络时间,也使得ASP.NET在服务器端进行额外处理.所以,你应该尽可能多地使用Http Get.但是,Http Get不允许你传递对象作为参数.你可以只传递数字,字符串和日期.当你进行Http Get调用时,Atlas构建一个编码的url并制作对那个网址的打击.所以,你不能传递过多的内容,这会使网址大于2048个字符.据我所知,这就是任何网址的最大长度.

http post的另一个坏处是,它实际上是2个电话.第一个浏览器使用"HTTP 100 Continue"发送http post标头和服务器回复.当浏览器收到此消息时,它会发送实际的正文."


这是回答OP问题的唯一答案.其他人在谈论差异.
不,也是因为他们的工作方式; 他们发送数据的方式和方式完全不同.见http://omaralzabir.com/atlas_2__http_post_is_slower_and_it_s_default_in_atlas/

4> CMS..:

这可能有助于您决定在何处使用GET以及在何处使用POST:

URI,可寻址性以及HTTP GET和POST的使用.



5> Matt..:

任何人都没有提到另外一个区别.

GET请求在URL字符串中传递,因此受限于通常取决于浏览器的长度限制.

POST请求可能要大得多 - 实际上并不受限制.因此,如果您需要从Web服务器请求数据并且您传递了大量参数信息,那么POST请求可能是唯一的选择.

因此,如前所述,GET请求实际上是用于请求数据(没有副作用),而POST请求通常用于将数据发送回服务器以进行存储(具有副作用).例如,使用POST上传文件.GET来检索文件.

曾经有一段时间我认为IE有一个非常短的GET URL字符串.Lotus Notes等一些应用程序使用大量随机字符来表示文档ID.我不喜欢使用另一个生成随机字符串的产品,因此页面URL每次都是唯一的.随机字符串是巨大的...它并不总是与内存中的IE6一起使用.



6> 小智..:

POST请求与GET一样不安全.主要区别在于POST用于修改服务器应用程序的状态,而GET仅从其请求数据.

当您使用干净的"restful"URL时,差异很重要,URL本身指定资源,不同的方法在服务器端触发不同的操作.

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有