如何读取本地cookies

5
我有一个ASP.NET Web应用程序,在执行某个操作(例如单击链接)时存储HTTP cookie。现在,我正在创建一个独立的C#应用程序,需要监视cookie文件夹,并识别我的Web应用程序创建了cookie条目,然后读取cookie内容。
请问有人可以指导我如何在C#中实现此功能或者提供示例代码吗?
3个回答

4

您应该能够使用 PInvoke 调用 InternetGetCookie

[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
protected static extern bool InternetGetCookie(
    string url,
    string name,
    StringBuilder cookieData,
    ref int length);

如果你使用Rest Starter Kit,那么你可以像下面这样调用InternetGetCookie

StringBuilder cookieBuffer = new StringBuilder(1024); 
int size = 1024; 
bool bSuccess = InternetGetCookie("domain uri", "cookie_name", cookieBuffer, ref size); 
if (!bSuccess) 
{ 
    Int32 err = Marshal.GetLastWin32Error(); 
    //log err
} 
if (cookieBuffer != null && (cookieBuffer.Length > 0)) 
{ 
    Microsoft.Http.Headers.Cookie cookie = Microsoft.Http.Headers.Cookie.Parse(cookieBuffer.ToString()); 
    HeaderValues<Microsoft.Http.Headers.Cookie> requestCookies = new HeaderValues<Microsoft.Http.Headers.Cookie>(); 
    requestCookies.Add(cookie); 
}

4
我不禁认为那样做是错误的...而且充满了安全隐患。你难道没有更好的方法吗?也许可以通过在WebBrowser控件中托管页面,并使用一个ObjectForScripting对象(由您设计)来从JavaScript与C#应用程序进行通信?

好的建议。楼主,你有必须在客户端存储该值的原因吗?将该值存储在服务器上,并通过服务使客户端应用程序拉取它,这样做有何不可呢?特别是如果客户端应用程序没有真正需要WebBrowser控件的情况下。 - Wil P
当我的网站上的链接被点击时,我需要我的应用程序执行某个操作。所以我认为最好的方法是让应用程序监视 cookie,并且在链接被点击时网站存储一个 cookie。是否有更好的方法? - Glory

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接