美文网首页
post 和 get 方式提交数据的区别

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

作者: 饥人谷_易燃 | 来源:发表于2018-03-30 14:19 被阅读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要差一些,因为GET提交的数据会在浏览器URL中直接看到,这样会容易导致信息泄露,而POST请求则不会;并且GET提交可以被浏览器缓存,POST缓存大多数浏览器都不支持,所以GET的数据可以在浏览器历史记录中查到;
    • 还有一种网上说的安全是指的是在规范的定义下,GET操作不会修改服务器的数据

    场景不同

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

    参考:

    浅谈HTTP中Get与Post的区别

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

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

    相关文章

      网友评论

          本文标题:post 和 get 方式提交数据的区别

          本文链接:https://www.haomeiwen.com/subject/rvtbcftx.html