1 HTTP 协议
HTTP(HyperText Transfer Protocol),超文本传输协议。是万维网中一种网络协议,通常承载于TCP传输协议之上。也有承载于TLS和SSL协议之上的,这就是HTTPS了。默认HTTP的端口号为80,HTTPS的端口号为443。
HTTP定义了四种与服务器数据交互的方法,分别是:GET,POST,PUT,DELETE.
GET,POST,PUT,DELETE就对应着对这个资源的查 ,改 ,增 ,删 4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息(个人认为这是GET和POST的本质区别,也是协议设计者的本意,其它区别都是具体表现形式的差异)[2]。
下面就只详解GET和POST请求吧
2.GET 方法
get:请求参数是作为一个key/value对的序列(查询字符串)附加到URL上的
查询字符串的长度受到web浏览器和web服务器的限制(如IE最多支持2048个字符),不适合传输大型数据集同时,它很不安全
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据)
3.POST 方法
post:请求参数是在http标题的一个不同部分(名为entitybody)传输的,这一部分用来传输表单信息,因此必须将Content-type设置为:application/x-www-form-urlencoded。post设计用来支持web窗体上的用户字段,其参数也是作为key/value对传输。
对于POST,一般浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据),而Firefox就只发送一次。
4.安全性
一般理解,POST的安全性要比GET的安全性高。注意:这里所说的安全性和上面GET提到的“安全”不是同个概念。上面“安全”的含义仅仅是不作数据修 改,而这里安全的含义是真正的Security的含义,比如:通过GET提交数据,用户名和密码将明文出现在URL上,因为(1)登录页面有可能被浏览器缓存,(2)其他人查看浏览器的历史纪录,那么别人就可以拿到你的账号和密码了,除此之外,使用GET提交数据还可能会造成Cross-siterequest forgery(跨站请求伪造)攻击[4].
时间较为匆忙,提干精要的阅读了相关连接,引用其中的话做了小结。
如有错误之处,愿意交流的朋友留下您的见解,一起探讨。
相关连接
1 深入理解HTTP协议:www.blogjava.net/zjusuyong/articles/304788.html
2. 常见错误理解GET,POST :http://www.tuicool.com/articles/faAJNzR
3. GET,POST 本质理解:http://blog.csdn.net/csj50/article/details/5687850
4. 跨站请求伪造:http://blog.csdn.net/myfuturein/article/details/8046899