如何阅读本地cookie

Glo*_*ory 5 c# asp.net cookies

我有一个ASP.NET Web应用程序,在执行某个操作时存储HTTP cookie(例如,单击了一个链接).现在,我正在创建一个独立的C#应用​​程序,它需要查看cookies文件夹并识别我的Web应用程序何时创建了cookie条目并读取了cookie的内容.

有谁可以指导我如何在C#中执行此操作或显示示例代码?

Wil*_*l P 5

你应该能够PInvoke InternetGetCookie.

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

InternetGetCookie假设您正在使用Rest Starter Kit,则可以调用如下所示.

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); 
}
Run Code Online (Sandbox Code Playgroud)


Mar*_*ell 5

我不禁想到这只是错误的做法......而且它也是安全滥用的祸根.有没有更好的方法可以做到这一点?也许在一个WebBrowser控件中使用一个ObjectForScripting对象(你的设计)来托管页面,这样你就可以通过javascript与C#应用程序交谈了?


Wil*_*l P 0

您还可以做另一件事,这可能会导致通过单击链接来调用本地应用程序。您需要将应用程序注册到 URL 协议,如此处所示这是您可以查看的教程和示例应用程序

这样做有其自身的一系列安全隐患。但是,这是从网页调用应用程序的一种简单方法,并且它允许您通过命令行参数传递数据。