<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://www.jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://www.jackxiang.com/post//</link>
<title><![CDATA[C#利用浏览器获取完整COOKIE示例]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Wed, 27 Feb 2013 09:29:30 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	为何要转这一篇文章？在客户端里用c#编写的代码，怎么知道浏览器里登录者是谁并自动帮客户端登陆呢，有没有浏览器登录后客户端知道是谁？共享cookie怎么实现 的，目前流行的QQ是客户端登录后浏览器知道是谁，用的是一个浏览器插件和浏览器本身的支持以确保安全，这个刚好相反，是怎么实现的？我看到网上有一篇文章：C#利用浏览器获取完整COOKIE示例。<br/><br/><br/>2.解决方法1: 使用WIN API获取<br/>3.解决方法2:自已写方法读取本地COOKIE文件。（如果有多个浏览器估计得支持多个浏览器目录下的cookie读取才行）<br/><br/><br/><br/>使用WebBrowser获取一个网站的COOKIE,在调用Document.Cookie时，发现无法完整获取其COOKIe<br/>1.原因：<br/>此 Cookie,加入了。httponly<br/>2.解决方法1: 使用WIN API获取<br/>就可以使用InternetGetCookieEx这个Win API来取得，下面是API的方法宣告<br/>[DllImport（&quot;wininet.dll&quot;, CharSet = CharSet.Auto, SetLastError = true）]<br/>static extern bool InternetGetCookieEx（string pchURL, string pchCookieName, StringBuilder pchCookieData, ref<br/>System.UInt32 pcchCookieData, int dwFlags, IntPtr lpReserved）；<br/>[DllImport（&quot;wininet.dll&quot;, CharSet = CharSet.Auto, SetLastError = true）]<br/>static extern int InternetSetCookieEx（string lpszURL, string lpszCookieName, string lpszCookieData, int dwFlags,<br/>IntPtr dwReserved）；<br/>private static string GetCookies（string url）<br/>&#123;<br/>&nbsp;&nbsp;uint datasize = 256;<br/>&nbsp;&nbsp;StringBuilder cookieData = new StringBuilder（（int）datasize）；<br/>if （！InternetGetCookieEx（url, null, cookieData, ref datasize, 0x2000, IntPtr.Zero））<br/>&#123;<br/>&nbsp;&nbsp;if （datasize &lt; 0）<br/>&nbsp;&nbsp;return null;<br/>&nbsp;&nbsp;cookieData = new StringBuilder（（int）datasize）；<br/>&nbsp;&nbsp;if （！InternetGetCookieEx（url, null, cookieData, ref datasize, 0x00002000, IntPtr.Zero））<br/>&nbsp;&nbsp;return null;<br/>&#125;<br/>return cookieData.ToString（）；<br/>&#125;<br/>实际上它是通过本地COOKIE文件的读取，来取得COOIE的<br/>3.解决方法2:自已写方法读取本地COOKIE文件<br/>public string Cookie（）<br/>&#123; <br/>&nbsp;&nbsp;if （this.Url == null）<br/>&nbsp;&nbsp;return null;<br/>&nbsp;&nbsp;string dir = this.Url.Host;<br/>&nbsp;&nbsp;FileStream fr = new FileStream（Environment.GetFolderPath（Environment.SpecialFolder.Cookies） + &quot;<br/>&nbsp;&nbsp;index.dat&quot;, FileMode.Open, FileAccess.Read, FileShare.ReadWrite）；<br/><br/>来自：<br/>http://www.builder.com.cn/2013/0226/2145832.shtml<br/>扩展阅读：<br/>关于C# 获取不到safari浏览器Cookie的问题：http://www.cnblogs.com/a546558309/archive/2012/08/21/2648601.html<br/>用C#如何创建、读取cookie：<br/>http://blog.sina.com.cn/s/blog_7e1662b201013nz8.html
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] C#利用浏览器获取完整COOKIE示例]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>