Vib*_*wer 3 cookies wpf webbrowser-control
我正在开发一个WPF应用程序,我在其中使用twitter API.要显示twitter身份验证页面,我正在使用WPF Web浏览器控件.我能够成功登录并使用twitter API.我的问题是我需要清除Web浏览器的cookie以实现注销功能.有没有办法在WPF Web浏览器中清除会话cookie?
我昨天遇到了这个问题,终于在今天提出了一个完整的解决方案.这里提到了答案,这里和这里将详细介绍.
这里的主要问题是WebBrowser(在WPF和WinForms中)不允许您修改(删除)现有的会话cookie.这些会话cookie阻止多用户单个设备体验成功.
上面链接中的StackOverflow响应省略了一个重要部分,它需要使用不安全的代码块,而不是使用该Marshal服务.下面是一个完整的解决方案,可以放入您的项目以抑制会话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);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5499 次 |
| 最近记录: |