从表面现像上面看 GET 和 POST 的区别:
1、使用GET方式传递参数
- 在浏览器地址栏中输入某个URL地址或者单机网页上的一个超链接时候,浏览器发出的HTTP请求消息的请求方式为GET。
- 如果网页中的表单元素的method属性被设置为“GET”,浏览器提交这个from表单时候生成的HTTP请求消息的请求方式也为GET。
- GET 请求的数据会附在 URL 之后(就是把数据放置在 HTTP 协议头中),以?分割 URL 和传输数据,参数之间
以&相连,如:login.action?name=zhagnsan&password=123456。POST 把提交的数据则放置在是 HTTP 包的包
体中。 - GET 方式提交的数据最多只能是 1024 字节,理论上 POST 没有限制,可传较大量的数据。其实这样说是错误
的,不准确的: - “GET 方式提交的数据最多只能是 1024 字节”,因为 GET 是通过 URL 提交数据,那么 GET 可提交的数据量就跟
URL 的长度有直接关系了。而实际上,URL 不存在参数上限的问题,HTTP 协议规范没有对 URL 长度进行限制。这个
限制是特定的浏览器及服务器对它的限制。IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器,如Netscape、
FireFox 等,理论上没有长度限制,其限制取决于操作系统的支持。
2、使用POST方式传递参数
- POST请求方式主要用于向web服务器端程序提交form表单中的数据:from表单的method被设置为“POST”
- POST方式将各个表单字段元素及其数据作为HTTP消息实体内容发送给web服务器,传送的数据量要比使用GET方式传送的数据量大得多。
- POST 的安全性要比 GET 的安全性高。注意:这里所说的安全性和上面 GET 提到的“安全”不是同个概念。上
面“安全”的含义仅仅是不作数据修改,而这里安全的含义是真正的 Security 的含义,比如:通过 GET 提交数据,用
户名和密码将明文出现在 URL 上,因为(1)登录页面有可能被浏览器缓存,(2)其他人查看浏览器的历史纪录,那么别
人就可以拿到你的账号和密码了,除此之外,使用 GET 提交数据还可能会造成 Cross-site request forgery 攻击。 - Get 是向服务器发索取数据的一种请求,而 Post 是向服务器提交数据的一种请求,在 FORM(表单)中,Method
默认为”GET”,实质上,GET 和 POST 只是发送机制不同,并不是一个取一个发!