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

2018-03-30  本文已影响0人  饥人谷_易燃

我们在写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一般用于更新资源信息。

参考:

浅谈HTTP中Get与Post的区别

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

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

上一篇 下一篇

猜你喜欢

热点阅读