• 【后端】经典面试题——GET和POST的区别


    要想答好这个题,要分两步

    第一步:先来一句总结性的话

    GET和POST是没有本质区别的~~

    (使用GET实现的场景,基本都可以使用POST来代替,使用POST实现的场景,也可以使用GET来代替)

    第二步,再来谈谈细节上的区别

    (1)GET的语义是“从服务器获取数据”,POST的语义是“往服务器上提交数据”

    (2)使用习惯上,给服务器传递的数据,GET通常放在URL的 query string中,而POST通常是放在body中

     (3)GET请求建议实现成“幂等”的,POST一般不要求实现成“幂等”

    幂等的意思是,知道输入结果,也知道对应的输出结果,你输入csdm官网的URL,网页就会跳转到csdm官网,而不会跳转到不孕不育的界面,这就是幂等的

    设计服务器的时候,就需要提供一些“接口/api”

    api传入的参数,就视为输入

    api返回的结果,就视为输出

    基于GET的api一般都会建议设计成幂等的,基于POST的api则无要求~~

    如果不是幂等的,有时候我们搜索一些关键词,跳出来的广告,在你重复刷新后,你会发现显示的广告虽然还是广告,但是内容不一样了,这就是不是幂等的结果

    (4)在幂等的基础上,GET的请求是可以被缓存的,POST则一般不会缓存

    缓存是浏览器的默认行为,因为你会经常登录csdm的官网,csdm的有些内容是会被缓存下来的,之后你在次搜索,就会提高效率(大致意思)

    如果GET是幂等的,没事,不用管,但如果GET不是幂等的,那就要让每次GET请求的URL都不相同,通过特殊的query string来保证url不同,这样就避免产生缓存了


    网上会有这样一个说法:POST比GET更安全

    这个说法的依据是:GET把参数放在url里面,如果实现登录页面,一登录,你的用户名和密码就直接以query sting 的形式放在url里卖了,就直接显示带浏览器的地址栏中了,这样就不太安全

    而POST则是把参数放到body中,不会显示到浏览器界面上,手艺不会直接显示出来就更安全了

    注意:这个说法是错误的,数据安全不是光靠是否显示出来就不安全来判定的

    而是你的数据在被黑客截获后,无法解析内容,这才是安全的

    https有加密功能,http没有加密功能,但相对来说,我们一般都是通过业务来进行加密的,与POST/GET/HTTP没有太大的关系~

  • 相关阅读:
    重装系统后新建文本文档打不开怎么办
    43、SpringMvc创建拦截器(拦截器的配置)
    基础设施即代码(IAC),Zalando Postgres Operator 简介
    linux安装宝塔
    Quartz 的启动流程分析
    【电子书下载】z-library的用法
    javascript设计模式 持续追加
    OBIA:900+ 患者、193w+ 影像,中科院基因组所发布我国首个生物影像共享数据库
    WPF/C#:数据绑定到方法
    jsp_ssm基于HTML5的在线拼车系统java
  • 原文地址:https://blog.csdn.net/qq_61862008/article/details/127770207