优秀的编程知识分享平台

网站首页 > 技术文章 正文

GET 和 POST 的区别(表单提交get和post的区别)

nanyue 2024-10-21 06:17:00 技术文章 7 ℃

欢迎关注公众号:TestingStudio,学习更多测试开发必备技能


前言

在软件测试的面试中,GET 和 POST 的区别是特别容易被问到的一个问题。

面试官问出这个问题,其实考察的是大家对于网络基础知识中的 HTTP 协议的掌握程度。下面来梳理一下这个问题的回答思路。

本质

GET 和 POST 都是 HTTP 协议中规定好的不同的请求方法,也是实际工作当中最经常使用的请求方法。所以从本质上来说,这两种请求方法是一样的。

区别

GET 和 POST 既然是两种不同的请求方法,肯定还是有区别的。

不同点

GET

POST

请求方法

请求头 method 字段值为 GET

请求头 method 字段值为 POST

常用请求参数传递方式

URL 中拼接

请求体 body

请求参数格式

urlencode

支持 form、json、xml、binary 等各种数据格式

请求参数长度

被浏览器限制(2k)

无限制

安全性

相对较低

相对较高

RestFul 规范

无状态变化

数据的写入与状态修改

  • 请求方法

最直接的区别,它们是两种不同的请求方法,在请求中的 method 字段就是不同的,一个是 GET,一个是 POST。

  • 请求参数传递方式与参数格式

最明显的区别,GET 和 POST 一般采用的参数传递方式不同。

GET 请求参数一般是拼接在 URL 当中。所以只支持 urlencode 这种数据格式。

POST 请求支持通过请求 body 去传递参数的,body 中可以添加不同格式的参数,比如说 form 表单格式,json 格式,xml 格式,binary 二进制字节流等等。

但是这只是通用用法,如果非要在 GET 请求中添加 body,或者 POST 请求中把参数拼接在 URL 中,其实技术上是可以实现的。

  • 请求参数长度与安全性

GET 请求携带参数需要拼接在 URL 中,所以请求参数的大小会受到浏览器对 URL 长度的限制,一般来说是 2k。

而 POST 请求参数放在 body 中,所以长度没有限制。

  • 安全性

还是因为 GET 的请求参数拼接在 URL 中,直接在浏览器地址栏中就能看到,所以安全性要低一些。

POST 的请求参数在 body 中,需要懂一点技术,比如会抓包才能看到参数是什么,所以安全性相对要高一些。

  • RestFul 规范

而且 GET 和 POST 的实际使用场景也不同。

现在大部分的接口会遵循 RestFul 风格,这个风格规定好了行业通用的规范,在不同的场景去使用不同的请求方法。

比如无状态变化的建议使用 GET 请求,数据的写入与状态修改建议用 POST。

总结

总体来说 GET 和 POST 最重要的区别就是这几项:

  • HTTP 请求中的 method 字段不同
  • GET 请求参数拼接在 URL 中,有长度限制,安全性相对较低
  • POST 请求参数放在 body 中,可以支持 form、json、xml、binary 等各种数据格式,没有长度限制,安全性相对较高
  • RestFul 规范无状态变化的建议使用 GET数据的写入与状态修改建议用 POST
最近发表
标签列表