• 谈谈HTTP协议的方法里,GET和POST的区别?我来教你如何回答~


    目录

    前言

    一、什么是GET、POST?

    1.1GET

    1.2POST

    二、如何轻松回答?

    第一步、直接盖棺定论:

    第二步、谈细节上的区别:


    前言

            要想回答好这个问题,咱们先来了解以下什么是GET、POST方法,有哪些细节要注意;


    一、什么是GET、POST?

    1.1GET

            GET是HTTP请求最常用的方法,本质上就是浏览器通过GET方法,向服务器发起GET请求,从服务器拿到相应的数据;

    什么时候会触发这个请求?

    1.浏览器的地址栏中输入URL,就会触发GET;

    2.HTML里的link、a、img、script会触发GET请求;

    3.html中的form标签可以构造出GET请求;

    4.使用 JavaScript 的 ajax 也可以构造 POST 请求

    很多人的误区:“GET请求长度长度最多是1KB / 2KB ...?”;这个说法真的正确吗?

            HTTP 协议由 RFC 2616 标准定义, 标准原文中明确说明: "Hypertext Transfer Protocol -- HTTP/1.1," does not specify any requirement for URL length.

            也就是说,标准中,并未对URL的长度做出限制;其实虽然没有提到有长度上限,但是浏览器和HTTP服务器在实现的时候,可能有长度上线,也可能没有,具体要看如何实现了;

    1.2POST

            POST是用来将用户输入的数据发送给服务器的一种方法;(例如一些网站的登录界面,当你输入账号和密码,提交以后,便会执行这个方法);

    什么时候会触发这个请求?

    1.通过 HTML 中的 form 标签可以构造 POST 请求

    2.使用 JavaScript 的 ajax 也可以构造 POST 请求

    POST请求的特点

    1.POST请求中,首行第一部分为POST;

    2.URL一般没有query string;

    3.header 部分有若干个键值对结构.

    4.body部分的数据格式有很多种,一般不会为空;


    二、如何轻松回答?

    第一步、直接盖棺定论:

            GET和POST没有本质区别,使用GET的场景基本都可以使用POST代替,使用POST的场景也可以用GET代替;

    第二步、谈细节上的区别:

    细节一:(语义上)

            GET语义:从服务器获取一个数据;

            POST语义:往服务器提交一个数据;

            虽然HTTP协议说是这么说,但是很多程序员还是没有遵守这个约定~

    细节二:(使用习惯上)

            习惯上,给服务器传递数据,GET通常放在URL的query string中,POST通常是放在body;中;

            GET能放在body中吗?可以滴,HTTP客户端支持,但是浏览器不一定支持;

            POST能放在query string中吗?可以呢!浏览器和客户端都支持~

    细节三:(幂等)

            GET请求建议实现成“幂等”的,POST不做要求;(幂等性:比方说一个函数的方法是1 + 1,结果等于2,你调用一次结果是2,你调用n次结果依然是2,不会改变);

            服务器设计时会提供一些api:api传入的参数视为输入,返回的结果视为输出;基于GET的api建议设置成幂等的,POST不做要求;

    细节四:(缓存)

            在幂等的基础上,GET请求结果是可以被缓存的,POST一般不缓存;

            这时浏览器默认的,若当前GET时幂等的,就不做处理,让浏览器缓存;若当前GET不是幂等的,就需要通过特殊技避免产生缓存;(技巧就是让GET请求的URL都不同,通过特殊的query string保证URL不同);

    细节五:(数据长度限制)

            由于 GET 请求一般放在 URL 中,因此请求的数据长度受到限制,安全 URL 长度限制通常为 2048 个字符,最多可传输 2KB 的数据,但因浏览器和 Web 服务器而异。

            POST 请求无限制。

    POST比GET更安全,这个说法正确吗?

            虽然在登录界面GET把参数放到的URL中确实不好,但是放到POST的body中,也一样没有更安全;因为咱们平时谈到的是否安全,是指:你的数据被黑客截获后,会不会对你造成信息泄漏这样的影响,只要你的代码没有进行加密,就谈不上安全;


  • 相关阅读:
    多项式
    Linux中一款超级好用的终端分屏控制工具tmux
    导览系统厂家|景区电子导览|手绘地图|AR导览|语音导览系统
    QT下输出.pro文件中的信息到输出窗口--概要信息
    CMD 命令和 ENTRYPOINT 命令的区别
    掌握ThreadLocal的王者段位
    实验5 动态路由协议EIGRP的配置
    Kubernetes1.16.0重置升级到1.22.2
    MySQL--视图、存储过程、触发器
    数据链路层:封装成帧
  • 原文地址:https://blog.csdn.net/CYK_byte/article/details/127774932