post 和 get 方式提交数据的区别

我们在写html的表单的时候,通常开始第一句为:

<form action="/a" method="post"></form>

其中form标签的属性method有两种选择,一种是get,一种是post;

method

属性method是告诉浏览器使用哪种方式发送表单数据(表单数据提交到到 action 属性所规定的页面),默认值为get,推荐使用post

二者区别

原理不同

GET只允许 ASCII 字符,如果含有非ASCII字符,;POST没有限制,也允许二进制数据;
GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,参数之间以&相连,如:

login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0%E5%A5%BD。

如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。
POST把提交的数据则放置在是HTTP包的包体中。

表象不通

GET提交的数据可以在浏览器的URL直接看到,POST则不会这样

数据量

虽然HTTP对于URL的长度没有限制,但是GET因为浏览器限制,最多提交1k的数据;POST理论上没有限制,但是实际上要受到服务器的限制

安全性

  • GET的安全性比POST要差一些,因为GET提交的数据会在浏览器URL中直接看到,这样会容易导致信息泄露,而POST请求则不会;并且GET提交可以被浏览器缓存,POST缓存大多数浏览器都不支持,所以GET的数据可以在浏览器历史记录中查到;
  • 还有一种网上说的安全是指的是在规范的定义下,GET操作不会修改服务器的数据

场景不同

GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。

参考:

浅谈HTTP中Get与Post的区别

为什么说:"对参数的数据类型,GET只接受ASCII字符,而POST没有限制?"

HTTP 请求中 POST 和 GET 请求的区别? - 知乎

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,288评论 19 139
  • #网络请求中的get post 区别 一般在浏览器中输入网址访问资源都是通过GET方式;在FORM提交中,...
    gogoingmonkey阅读 1,968评论 1 11
  • 1.背景介绍 基本概念HTTP:在Web应用中,服务器把网页传给浏览器,实际上就是把网页的HTML代码发送给浏览器...
    枫尘逍遥阅读 6,740评论 0 2
  • 记得那是一次运动会,同学们热情积极的报名参加比赛,平时不热爱运动的我,也积极参与了这次运动会,为了挑战自我,...
    火鐘遙阅读 329评论 0 2
  • 曾经作为一名一天要喝几大碗鸡汤的狂热者来说,鸡汤就是我生活的动力,鸡汤使我对这个世界充满了好感,鸡汤里的每一句话就...
    苏栗阅读 339评论 0 0