Pro*_*imo 23 c# cookies webbrowser-control
我正在使用C#编写的windows.form应用程序上的Webbrowser控件.我想写一个方法,在访问某个站点后从Webbrowers控件中删除cookie.不幸的是,我不知道该如何做到这一点,并没有在互联网上找到很多帮助.
如果有人有实际经验,不仅仅是假设,因为它可能比看起来更棘手,我不知道.
int count = webBrowser2.Document.Cookie.Length;
webBrowser2.Document.Cookie.Remove(0,count);
Run Code Online (Sandbox Code Playgroud)
我只是假设上面的代码可以工作,但我想它不会.任何人都可以对这整个饼干有所了解吗?
Jor*_*lne 25
如果您启用了JavaScript,则可以使用此代码段清除以清除webbrowser当前所在站点的Cookie.
webBrowser.Navigate("javascript:void((function(){var a,b,c,e,f;f=0;a=document.cookie.split('; ');for(e=0;e<a.length&&a[e];e++){f++;for(b='.'+location.host;b;b=b.replace(/^(?:%5C.|[^%5C.]+)/,'')){for(c=location.pathname;c;c=c.replace(/.$/,'')){document.cookie=(a[e]+'; domain='+b+'; path='+c+'; expires='+new Date((new Date()).getTime()-1e11).toGMTString());}}}})())")
Run Code Online (Sandbox Code Playgroud)
它来自此书签用于清除cookie.
小智 13
我从这里修改了解决方案:http: //mdb-blog.blogspot.ru/2013/02/c-winforms-webbrowser-clear-all-cookies.html
实际上,您不需要不安全的代码.这是适合我的助手类:
public static class WinInetHelper
{
public static bool SupressCookiePersist()
{
// 3 = INTERNET_SUPPRESS_COOKIE_PERSIST
// 81 = INTERNET_OPTION_SUPPRESS_BEHAVIOR
return SetOption(81, 3);
}
public static bool EndBrowserSession()
{
// 42 = INTERNET_OPTION_END_BROWSER_SESSION
return SetOption(42, null);
}
static bool SetOption(int settingCode, int? option)
{
IntPtr optionPtr = IntPtr.Zero;
int size = 0;
if (option.HasValue)
{
size = sizeof (int);
optionPtr = Marshal.AllocCoTaskMem(size);
Marshal.WriteInt32(optionPtr, option.Value);
}
bool success = InternetSetOption(0, settingCode, optionPtr, size);
if (optionPtr != IntPtr.Zero) Marshal.Release(optionPtr);
return success;
}
[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern bool InternetSetOption(
int hInternet,
int dwOption,
IntPtr lpBuffer,
int dwBufferLength
);
}
Run Code Online (Sandbox Code Playgroud)
您可以在流程开始时调用SupressCookiePersist,并在浏览器关闭时清除Cookie,如下所述: Facebook多帐户
mr.*_*123 10
我找到了一个解决方案,用于删除所有cookie.在url上找到的示例,删除应用程序(进程)启动时的cookie.
http://mdb-blog.blogspot.com/2013/02/c-winforms-webbrowser-clear-all-cookies.html
解决方案是使用InternetSetOption 函数来通知WEBBROWSER清除其所有内容.
int option = (int)3/* INTERNET_SUPPRESS_COOKIE_PERSIST*/;
int* optionPtr = &option;
bool success = InternetSetOption(0, 81/*INTERNET_OPTION_SUPPRESS_BEHAVIOR*/, new IntPtr(optionPtr), sizeof(int));
if (!success)
{
MessageBox.Show("Something went wrong !>?");
}
Run Code Online (Sandbox Code Playgroud)
请注意,仅在MSDN INTERNET_OPTION_SUPPRESS_BEHAVIOR上写入时清除特定PROCESS的cookie :
用于在整个流程范围内抑制行为的通用选项.
| 归档时间: |
|
| 查看次数: |
60059 次 |
| 最近记录: |