wpf - 在 WPF Web 浏览器控件中删除 cookie

标签 wpf cookies webbrowser-control

我正在开发一个使用 twitter API 的 WPF 应用程序。为了显示 twitter 身份验证页面,我正在使用 WPF Web 浏览器控件。我能够成功登录并使用 twitter API。我的问题是我需要清除 Web 浏览器的 cookie 才能实现注销功能。有什么方法可以清除 WPF Web 浏览器中的 session cookie?

最佳答案

我昨天遇到了这个问题,今天终于想出了一个完整的解决方案。答案提到了here更详细的herehere .

这里的主要问题是 WebBrowser(在 WPF 和 WinForms 中)不允许您修改(删除)现有 session cookie。这些 session cookie 阻碍了多用户单设备体验的成功。

上面链接中的 StackOverflow 响应省略了一个重要部分,它需要使用不安全的代码块,而不是使用 Marshal 服务。下面是一个完整的解决方案,可以放入您的项目中以抑制 session cookie 持久性。

public static partial class NativeMethods
{
    [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
    private static extern bool InternetSetOption(IntPtr hInternet, int dwOption, IntPtr lpBuffer, int dwBufferLength);

    private const int INTERNET_OPTION_SUPPRESS_BEHAVIOR = 81;
    private const int INTERNET_SUPPRESS_COOKIE_PERSIST = 3;

    public static void SuppressCookiePersistence()
    {
        var lpBuffer = Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(int)));
        Marshal.StructureToPtr(INTERNET_SUPPRESS_COOKIE_PERSIST, lpBuffer, true);

        InternetSetOption(IntPtr.Zero, INTERNET_OPTION_SUPPRESS_BEHAVIOR, lpBuffer, sizeof(int));

        Marshal.FreeCoTaskMem(lpBuffer);
    }
}

关于wpf - 在 WPF Web 浏览器控件中删除 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10810881/

相关文章:

WPF:在两个显示器上开发,单独的设计编辑器和 xaml 代码

c# - Web 浏览器控件 LoadCompleted 事件未触发

java - 创建 BasicClientCookie

php - 如何删除谷歌分析 cookie?

c# - 如何在 System.Windows.Forms.WebBrowser 中调用自定义 Javascript?

c# - 使用 OpenFileDialog 作为目录,而不是 FolderBrowserDialog

WPF 功能区 ImageSource

Java Play2 - 从 session 到 cookie

c# - Webbrowser 单击具有 OnClick 属性的链接

c# - 禁止在 WebBrowser 控件中单击或键入