[转]post和get的详解
POST和GET为客户端向服务器传递数据的方法,浏览器向服务器进行数据传送,若使用FORM,常用的传送数据的方法是GET 和POST。
1.get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到,形式如下:
URL?var_name1=value1&var_name2=value2
即将表单内各字段名称与其内容, 以成对的字符串连接, 置于表单ACTION 属性所指的URL 后, 如:
http://211.64.32.2/login.php?name=abc&password=123
get传送方式数据都会直接显示在 URL 上,就像用户点击一个链接一样;
POST 方法通过 HTTP POST 机制,将表单内各字段名称与其内容放置在 HTML 表头(header)内一起传送给服务器端交由ACTION 属性能所指的程序处理,用户看不到这个过程,该程序会通过标准输入(stdin)方式,将表单的数据读出并加以处理。
2.通过GET 方法提交数据,可能会带来安全性的问题。比如一个登陆页面,当通过GET 方法提交数据时,用户名和密码将出现在URL 上。如果登陆页面可以被浏览器缓存或其他人可以访问客户的这台机器。那么,别人就可以从浏览器的历史记录中,读取到此客户的账号和密码。所以,在某些情况下,GET 方法会带来严重的安全性问题。
3.GET 方式传输的数据量非常小,一般限制在 2 KB 左右,但是执行效率却比 POST 方法好;而POST 方式传递的数据量相对较大,它是等待服务器来读取数据,不过也有字节限制,这是为了避免对服务器用大量数据进行恶意攻击。使用PHP,默认的POST_MAX_SIZE 是2M(通过配置php.ini 实现),如果你想利用POST 方式上传软件,就需要更改这个值了(我设置为20M 仍然能够正确上传文件),但是倘若试图使用GET 方式,就没有可能实现这种功能。
4. 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
5. get安全性非常低,post安全性较高。但是执行效率却比Post方法好。
建议:
1、get方式的安全性较Post方式要差些,包含机密信息的话,建议用Post数据提交方式;
2、在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式;