超文本传输协议( HTTP )是用于启用客户端与服务器之间的通信,其中 GET 请求和 POST 请求是则是 HTTP 方法中最为常用的两种。那么这 GET 和 POST 的区别到底是什么呢?两者是否安全呢?

从标准上来说,大致区别如下:

  • GET 用于获取信息,可缓存,无副作用,且是幂等的,通过 url 传递参数,且参数 url 可见。

  • POST 用于修改服务器上的数据,不可缓存,有副作用,非幂等,通过 body 体传递参数,且参数 url 不可见。

但从报文上来说, GET 和 POST 都只是 HTTP 协议中两种请求方式,本质上都是 TCP 链接,没有区别,只是报文的格式有所不同。

  • GET 方法请求报文第一行是:

    GET /uri HTTP/1.1 \r\n
  • POST 方法请求报文第一行则是:

    POST /uri HTTP/1.1 \r\n

由此可见,不带参数时它们的区别仅是报文的前几个字符不同而已。而在带参数时的报文中,我们约定, GET 方法的参数应放在 url 中, POST 方法参数应放在 body 中。当然,当服务端允许的条件下,不按规范,我们也可以使用 POST 在 url 上写参数,用 GET 方法在 body 上写参数。

那么 POST 方法就比 GET 方法安全吗?按照网上大部分文章的解释,POST 比 GET 安全,因为数据在地址栏上不可见。然而实际上,从传输的角度来说,POST 和 GET 都是不安全的,因为他们在网络上都是明文传输,只要在网络节点上捉包,就能获取完整的数据报文。因此想要安全传输,就需要加密,即 HTTPS 。

所以,对于 GET 和 POST 的区别,总的来说,就是:它们的本质都是 TCP 链接,并无区别。但是由于 HTTP 的规定以及浏览器/服务器的限制,导致它们在应用过程中可能会有所不同。

比如我现在使用的 API 接口测试工具 Eolink ,它支持 HTTP 、 HTTPS 、 WS 、 WSS 等多种常用的协议,它能帮助我完成之前使用过的很多工具都没能覆盖到的多种协议。

除此之外,Eolink 还提供了自动化测试服务、 API 网关、 API 监控、 API 自动生成等服务。感兴趣可以自行使用:www.eolink.com

GET 和 POST 请求的区别与安全性的更多相关文章

  1. Ajax的get和post两种请求方式区别

    Ajax的get和post两种请求方式区别 (摘录):http://ip-10000.blog.sohu.com/114437748.html 解get和post的区别. 1. get是把参数数据队列 ...

  2. JSP、Servlet中get请求和post请求的区别总结

    在学习JavaWeb最初的开始阶段,大家都会遇到HttpServlet中的doGet和doPost方法.前两天看<Head First Servlets & JSP>看到其中讲关于 ...

  3. js---post与get请求的区别

    request获取请求参数 最为常见的客户端传递参数方式有两种: 浏览器地址栏直接输入:一定是GET请求: 超链接:一定是GET请求: 表单:可以是GET,也可以是POST,这取决与<form& ...

  4. Ajax中Get请求与Post请求的区别

    Get请求和Post请求的区别 1.使用Get请求时,参数在URL中显示,而使用Post方式,则不会显示出来 2.使用Get请求发送数据量小,Post请求发送数据量大 例子 页面的HTML代码: &l ...

  5. 普通请求和ajax请求的区别

    普通请求和ajax请求的区别? 下面的action返回一个json文件,文件内容为sts.*,data1

  6. post和get请求的区别

    post和get请求的区别: 1.post发送的数据在请求体中,用户看不到 get发送的数据在地址栏中 2.post请求中有content-type,作用是告诉服务器,发送给服务器的数据格式,是和ur ...

  7. GET请求和POST请求的区别

    request获取请求参数 最为常见的客户端传递参数方式有两种: 浏览器地址栏直接输入:一定是GET请求: 超链接:一定是GET请求: 表单:可以是GET,也可以是POST,这取决与<form& ...

  8. Ajax相关——get请求和post请求的区别

    一.完整的URL由以下几部分组成: scheme:通信协议,常用的有:http/ftp. host:主机,服务器(计算机)域名或IP地址 port:端口,整数,可选,省略时使用默认端口,http的默认 ...

  9. 同步请求和异步请求的区别,ajax异步请求如何理解

    同步请求和异步请求的区别 先解释一下同步和异步的概念 同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式. 异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的 ...

随机推荐

  1. XCTF练习题---MISC---wireshark1

    XCTF练习题---MISC---wireshark1 flag:flag{ffb7567a1d4f4abdffdb54e022f8facd} 解题步骤: 1.观察题目,下载附件 2.得到一个wire ...

  2. 浏览器获取京东cookie

    电脑浏览器打开京东网址 https://m.jd.com/ 按键盘F12键打开开发者工具,然后点下图中的图标 此时是未登录状态(使用手机短信验证码登录),如已登录请忽略此步骤 使用手机短信验证码登录( ...

  3. VS Code 真的会一统江湖吗?

    关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 作者 | ROBEN KLEENE / 策划 | 万佳原文链接:https://blog.ro ...

  4. 命令工具 -(1)Vim 文本编辑器学习

    关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 前言 提起 Linux,大家都听说过这句话:Linux 一切皆文件. 配置一个服务就是在修改它 ...

  5. Java操作Hadoop、Map、Reduce合成

    原始数据: Map阶段 1.每次读一行数据, 2.拆分每行数据, 3.每个单词碰到一次写个1 <0, "hello tom"> <10, "hello ...

  6. 痞子衡嵌入式:浅谈i.MXRT1xxx系列MCU时钟相关功能引脚的作用

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1xxx系列MCU时钟相关功能引脚作用. 如果我们从一颗 MCU 芯片的引脚分类来看芯片功能,大概可以分为三大类:电源.时钟 ...

  7. 一个NIH综合症患者的自白

    一个NIH综合症患者的自白 欢迎关注我的博客,️点他即可. NIH: Not Invented Here 当人们看到一款产品或者任何涉及创意的东西时,常常会有一个想法--这是抄的.也就是说它并非原创, ...

  8. Java 17 新特性:switch的模式匹配(Preview)

    还记得Java 16中的instanceof增强吗? 通过下面这个例子再回忆一下: Map<String, Object> data = new HashMap<>(); da ...

  9. vmware 无法安装 win 10

    因为默认是 UEFI,但我们并没有 UEFI 引导分区,所以需要改成 BIOS

  10. 浅析kubernetes中client-go structure01

    Prepare Introduction 从2016年8月起,Kubernetes官方提取了与Kubernetes相关的核心源代码,形成了一个独立的项目,即client-go,作为官方提供的go客户端 ...