无需重启即可删除 webBrowser 中的 cookie

Posted

技术标签:

【中文标题】无需重启即可删除 webBrowser 中的 cookie【英文标题】:Delete cookies in webBrowser without restart 【发布时间】:2014-02-11 11:49:05 【问题描述】:

你能说我如何删除private System.Windows.Forms.WebBrowser webBrowser1 中的所有cookie。我用过

[DllImport("wininet.dll", SetLastError = true)]
private static extern bool InternetSetOption(IntPtr hInternet, int dwOption, IntPtr lpBuffer, int lpdwBufferLength);

我想通过点击按钮来做到这一点。

private void button1_Click(object sender, EventArgs e)

         InternetSetOption(IntPtr.Zero, INTERNET_OPTION_END_BROWSER_SESSION, IntPtr.Zero, 0);
 

但它不起作用。我知道 webBrowser1.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());)())"); 不适合我。

【问题讨论】:

这可能有效,但没有记录:***.com/q/17369275/1768303。这也可能会有所帮助,具体取决于您的目标:***.com/a/21254020/1768303。 我不太明白应该将动态document=webBroweser.Document; document.execCommand("ClearAuthenticationCache", false); 放在我的按钮中的什么位置??我在 System.Core.dll 中得到 Microsoft.CSharp.RuntimeBinder.RuntimeBinderException System.Windows.Forms.htmlDocument 不包含“execCommand”的定义 您忘记了dynamic 关键字:dynamic document=webBroweser.Document;。没有hard-typed execCommand 方法,除非你使用MSHTML PIA。 我只在这条评论中忘记了。 【参考方案1】:

正确的打法如下:

dynamic document = webBrowser1.Document;
document.ExecCommand("ClearAuthenticationCache", false, null);

干杯。

【讨论】:

不适用于 .Net 4.5 和 Facebook 登录流程。

以上是关于无需重启即可删除 webBrowser 中的 cookie的主要内容,如果未能解决你的问题,请参考以下文章

无需密码即可远程关闭/重启 Linux 机器

Grails:无需重启容器即可部署 Tomcat

无需重启即可释放 Android 相机?

Rabbitmq 无需重启即可重新加载/刷新新证书

无需重启服务器即可更改静态内容(html、css、JS) Wildfly 8

无需重新加载页面即可删除 SQL 值(AJAX、PHP)