[size=large]很多人都是模模糊糊的知道post和get的区别,到底有什么区别,具体的也说不清楚。根据自己的一点经验有在网上找了很多这方面的知识,总结如下:
1,post/get都是请求服务器,get是发送获取服务器数据的请求;post是发送传递数据的请求。
2,post/get的安全问题:
1),get传输的数据是在URL里,post是封装在Form表单里。由于浏览器会缓存URL,如果URL里包含敏感数据,那么别的用户就可从历史记录里轻易的读取到这些数据。从这方面来分析get方法存在 严重的安全性问题。
2),如果从数据传输的过程来分析说post比get安全,是错误的。因为post,get传输数据都是明文传送。用类似httpfox这样的插件都可以看到二者传送的明文数据。
3),如果从操作动作来看说post比get安全更是严重的错误。因为恰恰相反,不单是字面意思,HTTP规范里,GET用于信息获取,而且应该是安全的和幂等的;POST表示可能修改变服务器上的资源的请求。get是通过指定的URL获取某个资源,是读取操作。不论get多少次被访问的资源的状态不会改变;post是对访问的资源追加数据,每次提交post参与的代码都会被认为这个操作会修改资 源的状态,于是按F5或者刷新页面时会弹出“是否确认重复提交的对话框”。例如:在论坛请求一个帖子的地址,无论刷新多少次,请求多少次都是得到的这个帖子的详细内容,而且帖子本身状态不会因为本次请求有发生任何改变。这样的操作是安全的幂等的。当对这个帖子发表评论时就应该使用post方法了,因为本次请求后资源的状态已经发生改变。
3,post/get请求数据的长度限制
1),http协议没有对请求数据的长度做限制,也没有对url的长度做限制。实际开发应用中特定浏览器和服务器对URL长度有限制,例如IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系统的支持。因为get方法传输数据是放在URL里面所以使用GET提交时,传输数据就会受到URL长度的限制。
2),POST:由于不是通过URL传值,理论上数据不受限。但实际各个WEB服务器会规定对post提交数据大小进行限制,Apache、IIS6都有各自的配置。IIS4最大80k,IIS5最大100k。[/size]
1,post/get都是请求服务器,get是发送获取服务器数据的请求;post是发送传递数据的请求。
2,post/get的安全问题:
1),get传输的数据是在URL里,post是封装在Form表单里。由于浏览器会缓存URL,如果URL里包含敏感数据,那么别的用户就可从历史记录里轻易的读取到这些数据。从这方面来分析get方法存在 严重的安全性问题。
2),如果从数据传输的过程来分析说post比get安全,是错误的。因为post,get传输数据都是明文传送。用类似httpfox这样的插件都可以看到二者传送的明文数据。
3),如果从操作动作来看说post比get安全更是严重的错误。因为恰恰相反,不单是字面意思,HTTP规范里,GET用于信息获取,而且应该是安全的和幂等的;POST表示可能修改变服务器上的资源的请求。get是通过指定的URL获取某个资源,是读取操作。不论get多少次被访问的资源的状态不会改变;post是对访问的资源追加数据,每次提交post参与的代码都会被认为这个操作会修改资 源的状态,于是按F5或者刷新页面时会弹出“是否确认重复提交的对话框”。例如:在论坛请求一个帖子的地址,无论刷新多少次,请求多少次都是得到的这个帖子的详细内容,而且帖子本身状态不会因为本次请求有发生任何改变。这样的操作是安全的幂等的。当对这个帖子发表评论时就应该使用post方法了,因为本次请求后资源的状态已经发生改变。
3,post/get请求数据的长度限制
1),http协议没有对请求数据的长度做限制,也没有对url的长度做限制。实际开发应用中特定浏览器和服务器对URL长度有限制,例如IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系统的支持。因为get方法传输数据是放在URL里面所以使用GET提交时,传输数据就会受到URL长度的限制。
2),POST:由于不是通过URL传值,理论上数据不受限。但实际各个WEB服务器会规定对post提交数据大小进行限制,Apache、IIS6都有各自的配置。IIS4最大80k,IIS5最大100k。[/size]