今天被问到一个问题post与get区别,马上恶补一下,走起!
- Get是向服务器发索取数据的一种请求;而Post是向服务器提交数据的一种请求。扒去外衣看本质,两者均是HTTP协议的不同请求,其底层都是TCP/IP,method=“get”并不是从服务器上获取数据,get和post 只是发送机制不同,需要明确 并不是一个取一个发!
- Get产生一个TCP数据包,即浏览器同时发送http head 和data,而POST产生两个TCP数据包,即先发送http head ,得到服务器响应后,再发送data,但并不意味着为了性能要放弃POST,在网络环境好的情况下,差别不大,而在网络环境欠佳时,两次包的数据完整性有很大优势。
- get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址,用户看不到这个过程。
- get 比 post更不安全,因为他将参数直接暴露在URL中。
- 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
- get传输2k的数据量,而post传输大约 IIS4中最大80k,IIS5中最大100k 。
- 参数的数据类型,GET只接受ASCII字符,而POST没有限制。
- Get方式的提交你需要用Request.QueryString来取得变量的值,而Post方式提交时,你必须通过Request.Form来访问提交的内容。
- GET在浏览器回退时是无害的,而POST会再次提交请求。
- GET请求会被浏览器主动cache,而POST不会,除非手动设置。
- GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。