表单提交

Get vs Post

提交方式


form可以有两种方式, 参数method可以指定postget

  • Get方式把内容直接附到url上,一波发送到action地址
  • Post先和action地址建立连接,然后在消息体中传输内容
1
2
3
4
5
<form action="page", method="get/post">
<p>First name: <input type="text" name="fname" /></p>
<p>Last name: <input type="text" name="lname" /></p>
<input type="submit" value="Submit" />
</form>

注意

form的action中如果带有参数比如action=xx.do?param=value,只有post会传送,get会忽略掉

优缺点


Get坏处

  • 安全问题:虽然Http明文本身不安全,但是Get时密码会出现在url串上,直接可见,并且会保存在历史日志中
  • 编码问题: 只能发送ASCII,不能二进制数据
  • 长度问题: url不能太长,因而限制了传送数据长度

Get好处

  • 简单高效
  • 后退无害,不会重复提交
  • 服务端可脱离form直接用url访问
    • 缓存问题: url可被浏览器缓存
    • SEO: url对应页面,可被搜索引擎搜到

总结


  • 幂等时使用Get
  • 避免URL附加参数时使用Post
  • 数据改变时使用Post,如新增数据,上传数据