关于GET和POST请求

来源:互联网 发布:联表查询sql语句 编辑:程序博客网 时间:2024/06/05 18:06

1.    相同点:

都属于http请求的方法,所以都包含开始行,头域,头域结束符,消息主体

2.    不同点:

a)      GET被指定用于客户端从服务器获取资源,POST被指定用于客户端向服务器提交资源

b)     GET请求的数据内容被追加在请求行的url里,并且大小有限制,规定在1024个字节以内,POST请求的数据被放在请求消息实体里,并且在请求头域里会对消息实体进行属性描述(如提交的数据类型,数据大小,字符集等等),数据大小无限制,但是实际上POST数据传输的大小会被服务器限制,比如Tomcat就默认限制为2M

c)      GET请求的响应信息会被用户代理(浏览器)缓存起来,同一样的GET请求,在缓存允许的情况下,用户代理会从缓存里面获取最新的响应缓存来作为当前请求的响应内容,而POST请求的响应内容除非在响应头域里面指定是可缓存的,不然是不会被用户代理缓存

d)     安全性

                       i.             从服务器的角度来看安全性:

GET被指定用于获取服务器的资源,不会更改服务器资源的内容,所以对于服务器来说,它是安全的

而POST被指定提交数据到服务器,会更改服务器某些资源,所以对于服务器来说,它是不安全的

 

                     ii.             从客户端数据提交的角度来看安全性:

GET也会用于数据的提交,为了获取某一url标识范围内的某一资源,会在GET请求里面指定请求的详细操作(如fileType=rmvb),这些详细操作会被显示的追加在url之后,所以,如果需要提交重要敏感的信息到服务器,这种方式    是相当不安全的

那么POST是否就安全了呢,POST提交的数据信息会被存放在请求的消息主体里面,会用特定的编码格式进行编码,这比起GET来,它的安全性是高了很多,但是,它也是不安全的,因为http协议使用明文字符传递数据,所以,http本身就是一种很不安全的数据传输方式,即使将消息内容进行编码,如果知道编码方式一样是可以解码,那么也就没有绝对的安全了,总之,POST较GET方式,从客户端提交数据角度来看安全性大大高于GET