在有些项目中会有BS 和CS混合使用,用winform控制web系统的相关操作。一个很经典的案例就是扣扣面板和空间以及邮箱的关联,在winform程序处于登陆状态时,可以直接打开并操作web系统而不用登陆该web系统。在这之中用到了模拟登陆,最近在做此类项目,稍稍研究了一下,发现有些东西不是理所当然的那样,所以不能想当然的去做。
模拟登陆基本思路很简单。在登陆winform的同时创建并实例化一个HttpWebRequest类,携带web系统的url向服务器发送request请求,控制服务器response一个sessionID,再将这个SessionID捕获并存入本地Cookie中。这样就在本地和服务器之间创建了一个通信,sessionID为信物,当你在winform面板上点击一个操作按钮打开web系统时,浏览器就会通过判断url携带cookie中相应的sessionID,有了这个sessionID,就可以免登陆通过sessionID验证进入系统,就像一个超级护照一样。 但是在测试使用时发现用IE8浏览器不能通过,会提示会话过期,这说明IE8浏览器的Cookie安全机制较高,导致Cookie没有传递或者没有根本找到cookie。其他浏览器却都能成功。
从微软发布的产品中不难发现微软越来越注重安全方面。无论是从XP到win7的进化,还是IE的发展,甚至VS工具的升级都等感觉到安全机制的提高。但微软又不允许我们了解其底层的东西,总喜欢把所有的东西都做好给你用,服务倒是很体贴,但这样会把我们都退化了,这样下去发现我们只会写代码,底层原理开始模糊了,这难道是微软的策略?