浅析 Get 和 Post 的区别
来源:互联网 发布:少女漫画推荐 知乎 编辑:程序博客网 时间:2024/05/17 22:32
基本请求简介
Http 定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。
GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。
URL 简介
URL 全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源。
URL 的编码格式采用的是 ASCII 码,而不是 Unicode,这也就是说你不能在 Url 中包含任何非 ASCII 字符,所有非 ASCII 字符均需要编码再传输,关于 Url 编码可参考:http://kb.cnblogs.com/page/133765/。
Get 和 Post 的区别:
1 形式上:
(1) Get 的请求参数放在 URL 后面(把数据放置在请求行(request line)中),并且第一个参数用 ? 拼接,后面从第二个参数开始,直到最后一个,用 & 分开,例如https://www.baidu.com/s?ie=utf-8&f=3&rsv_bp=1&rsv_idx=1
(2) Post 的参数是放在请求体里面;
因此,GET提交的数据会在地址栏中显示出来,而POST提交,地址栏不会改变。
2 传输数据的大小
首先声明:HTTP协议没有对传输的数据大小进行限制,HTTP协议规范也没有对URL长度进行限制。
所以:”GET方式提交的数据最多只能是1024字节,理论上POST没有限制,可传较大量的数据“?
其实这样说是错误的,不准确的(我也一度被误导了,too young to simple)
实际开发中存在的限制主要有:
(1) GET: 特定浏览器对URL长度有限制,例如 IE 对 URL 长度的限制是2083字节( 2K+35 )。对于其他浏览器,如 Netscape、FireFox 等,其限制取决于操作系统的支持。因此对于 GET 提交时,传输数据就会受到URL 长度的限制。
(2) POST: 由于不是通过 URL 传值,理论上数据不受限。但实际各个 WEB 服务器会规定对 post 提交数据大小进行限制,Apache、IIS6 都有各自的配置。
3 安全性
POST的安全性要比GET的安全性高。GET 的参数是暴露在地址栏的,并且有缓存(比如登录界面),其他人查看浏览器的历史纪录,就可以从缓存中得到登录的账号和密码等敏感数据;而 POST 提交的记录是没有缓存的。
4 其他
对于 GET 方式,服务端用 Request.QueryString 获取变量的值,对于POST 请求方式,服务端用 Request.Form 获取提交的数据。
POST 需要明确的指定方法, GET 不需要,并且默认就是 GET 请求。
总结:
最后,对各个浏览器对 URL 的限制
参考博客/资料:
http://blog.csdn.net/gideal_wang/article/details/4316691
http://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html
http://www.baiwar.com/post/the-maximum-length-of-the-url-in-the-browser-get-request-limits.html
http://www.w3school.com.cn/tags/html_ref_httpmethods.asp
http://blog.csdn.net/yang_5/article/details/8174889
说明:
本篇博客属于自己的理解,如有错误之处,欢迎拍砖。谢谢!
- 浅析 Get 和 Post 的区别
- 浅析HTTP中Get和Post的区别
- 浅析Post和Get
- get 和post 的区别
- get和post的区别
- get和post的区别
- post和get的区别
- Get和Post的区别
- get和post的区别
- post和get的区别
- post和get的区别
- Post和Get的区别
- Get和Post的区别
- get和post的区别
- Post和Get的区别
- get和post的区别
- POST和GET的区别
- post和get的区别
- 服务的启动方式
- POJ 2413(DP)
- SDUT 活动选择 1298
- 手工转换中缀式与前、后缀式(转)
- Linux学习--进程概念
- 浅析 Get 和 Post 的区别
- QWidget,QMainWindow和QDialog的区别
- 四、原型模式Prototype(创建型)
- Widnows bat 编译VS项目
- oracle11g ORA-01017:invalid username/password:logon denied
- 一个经典的问题的思考: strcpy覆盖内存
- linphone-PresenceService.java文件分析
- K-Means聚类算法java实现
- Swift与Objective-C的兼容“黑魔法”:@objc和Dynamic