如何清除 WPF WebBrowser 中特定站点的 cookie?

2023-12-30

如何删除特定网站或其页面的身份验证 cookie?目前,如果我通过 WPF WebBrowser 使用 OAuth 2.0 登录,我的登录会话将被保存,但我想在每次关闭应用程序时重置会话。

public partial class VKLogin : Window
    {
        public string AccessToken { get; set; }

        public VKLogin()
        {
            InitializeComponent();

            this.Loaded += (object sender, RoutedEventArgs e) =>
            {
                webBrowser.Navigate("https://oauth.vk.com/authorize?client_id=5965945&scope=wall&redirect_uri=https://oauth.vk.com/blank.html&display=page&v=5.63&response_type=token");
            };
        }

        private void webBrowser_Navigated(object sender, NavigationEventArgs e)
        {
            var url = e.Uri.Fragment;
            if (url.Contains("access_token") && url.Contains("#"))
            {
                url = (new System.Text.RegularExpressions.Regex("#")).Replace(url, "?", 1);
                AccessToken = System.Web.HttpUtility.ParseQueryString(url).Get("access_token");
            }
        }

        private void Window_Closed(object sender, EventArgs e)
        {
            webBrowser.Dispose();
        }
    }

XAML

<Grid>
    <WebBrowser Name="webBrowser" 
            Navigated="webBrowser_Navigated" 
             />
</Grid>

如果您想删除所有cookie,您可以使用InternetSetOption函数 https://msdn.microsoft.com/en-us/library/windows/desktop/aa385114(v=vs.85).aspx,解释说here http://mdb-blog.blogspot.se/2013/02/c-winforms-webbrowser-clear-all-cookies.html.

代码如下:

[System.Runtime.InteropServices.DllImport("wininet.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto, SetLastError = true)]
public static extern bool InternetSetOption(int hInternet, int dwOption, IntPtr lpBuffer, int dwBufferLength);

private static unsafe void SuppressWininetBehavior()
{
    /* SOURCE: http://msdn.microsoft.com/en-us/library/windows/desktop/aa385328%28v=vs.85%29.aspx
        * INTERNET_OPTION_SUPPRESS_BEHAVIOR (81):
        *      A general purpose option that is used to suppress behaviors on a process-wide basis. 
        *      The lpBuffer parameter of the function must be a pointer to a DWORD containing the specific behavior to suppress. 
        *      This option cannot be queried with InternetQueryOption. 
        *      
        * INTERNET_SUPPRESS_COOKIE_PERSIST (3):
        *      Suppresses the persistence of cookies, even if the server has specified them as persistent.
        *      Version:  Requires Internet Explorer 8.0 or later.
        */

    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)
    {
        //Something went wrong
    }
}

然后使用之后调用该函数InitializeComponent(); like:

SuppressWininetBehavior();

另外,如果您启用了 Javascript,则可以使用以下代码:

function delete_cookie( name ) {
  document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何清除 WPF WebBrowser 中特定站点的 cookie? 的相关文章

  • 通过 CMIS (dotCMIS) 连接到 SP2010:异常未经授权

    我正在使用 dotCMIS 并且想要简单连接到我的 SP2010 服务器 我尝试用 C 来做到这一点 如下所示http chemistry apache org dotnet getting started with dotcmis htm
  • “构建”构建我的项目,“构建解决方案”则不构建

    我刚刚开始使用VS2010 我有一个较大的解决方案 已从 VS2008 成功迁移 我已将一个名为 Test 的控制台应用程序项目添加到解决方案中 选择构建 gt 构建解决方案不编译新项目 选择构建 gt 构建测试确实构建了项目 在失败的情况
  • 为什么 C# Array.BinarySearch 这么快?

    我已经实施了一个很简单用于在整数数组中查找整数的 C 中的 binarySearch 实现 二分查找 static int binarySearch int arr int i int low 0 high arr Length 1 mid
  • 秒表有最长运行时间吗?

    多久可以Stopwatch在 NET 中运行 如果达到该限制 它会回绕到负数还是从 0 重新开始 Stopwatch Elapsed返回一个TimeSpan From MSDN https learn microsoft com en us
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • 查找c中结构元素的偏移量

    struct a struct b int i float j x struct c int k float l y z 谁能解释一下如何找到偏移量int k这样我们就可以找到地址int i Use offsetof 找到从开始处的偏移量z
  • Asp.NET WebApi 中类似文件名称的路由

    是否可以在 ASP NET Web API 路由配置中添加一条路由 以允许处理看起来有点像文件名的 URL 我尝试添加以下条目WebApiConfig Register 但这不起作用 使用 URIapi foo 0de7ebfa 3a55
  • 类模板参数推导 - clang 和 gcc 不同

    下面的代码使用 gcc 编译 但不使用 clang 编译 https godbolt org z ttqGuL template
  • HTTPWebResponse 响应字符串被截断

    应用程序正在与 REST 服务通信 Fiddler 显示作为 Apps 响应传入的完整良好 XML 响应 该应用程序位于法属波利尼西亚 在新西兰也有一个相同的副本 因此主要嫌疑人似乎在编码 但我们已经检查过 但空手而归 查看流读取器的输出字
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • 使用 Bearer Token 访问 IdentityServer4 上受保护的 API

    我试图寻找此问题的解决方案 但尚未找到正确的搜索文本 我的问题是 如何配置我的 IdentityServer 以便它也可以接受 授权带有 BearerTokens 的 Api 请求 我已经配置并运行了 IdentityServer4 我还在
  • 如何在 C 中调用采用匿名结构的函数?

    如何在 C 中调用采用匿名结构的函数 比如这个函数 void func struct int x p printf i n p x 当提供原型的函数声明在范围内时 调用该函数的参数必须具有与原型中声明的类型兼容的类型 其中 兼容 具有标准定
  • 如何序列化/反序列化自定义数据集

    我有一个 winforms 应用程序 它使用强类型的自定义数据集来保存数据进行处理 它由数据库中的数据填充 我有一个用户控件 它接受任何自定义数据集并在数据网格中显示内容 这用于测试和调试 为了使控件可重用 我将自定义数据集视为普通的 Sy
  • 链接器错误:已定义

    我尝试在 Microsoft Visual Studio 2012 中编译我的 Visual C 项目 使用 MFC 但出现以下错误 error LNK2005 void cdecl operator new unsigned int 2
  • 向现有 TCP 和 UDP 代码添加 SSL 支持?

    这是我的问题 现在我有一个 Linux 服务器应用程序 使用 C gcc 编写 它与 Windows C 客户端应用程序 Visual Studio 9 Qt 4 5 进行通信 是什么very在不完全破坏现有协议的情况下向双方添加 SSL
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • 测试用例执行完成后,无论是否通过,如何将测试用例结果保存在变量中?

    我正在使用 NUNIT 在 Visual Studio 中使用 Selenium WebDriver 测试用例的代码是 我想在执行测试用例后立即在变量中记录测试用例通过或失败的情况 我怎样才能实现这一点 NUnit 假设您使用 NUnit
  • 哪种 C 数据类型可以表示 40 位二进制数?

    我需要表示一个40位的二进制数 应该使用哪种 C 数据类型来处理这个问题 如果您使用的是 C99 或 C11 兼容编译器 则使用int least64 t以获得最大的兼容性 或者 如果您想要无符号类型 uint least64 t 这些都定
  • C++ 标准是否指定了编译器的 STL 实现细节?

    在写答案时this https stackoverflow com questions 30909296 can you put a pimpl class inside a vector我遇到了一个有趣的情况 这个问题演示了这样一种情况

随机推荐

  • 当我更改一行的值时,连续形式的 MS Access 组合框会更改所有行的值

    过去两个小时我一直在尝试解决这个问题 但没有成功 所以我希望你能帮助我解决这个问题 我有一个连续的表单 一次显示多行 我在表单中添加了一个组合框 显示一些可以从另一个表中选择的值 同时显示同一个表中的默认值 问题是 一旦我更改表单中一个组合
  • 如何使用 Erlang file:read_file_info 权限/模式信息?

    Erlang 文档为file read file info 1声明 文件权限是总和 和 其他位 可以设置 而不是灌输信心 而且 谷歌一直不是我的朋友 我希望采用返回的模式file read file info 1 e g 33188 在 L
  • 比较受歧视的工会

    我是 F 的新手 正在尝试 FParsec 我会使用 FParsec 生成 AST 我想使用 FsUnit 围绕解析器的各个部分编写一些测试 以确保正确运行 我在语法上遇到了一些麻烦 抱歉 确切的代码正在工作 我可以稍后发布一个具体的示例
  • 无法反序列化当前 JSON 对象(空数组)

    我正在尝试制作一个将所有这些对象格式化为树视图的程序 为此 我使用 JSON 来排序对象 我需要解析 JSON 所以我选择了 JSON NET 下面是一个格式化示例 Space ClassName SpaceObject Name Spac
  • 所有指针都保证能正确地往返 void * 吗?

    在C语言中 是否保证任何指针类型都可以往返void 成功地 也就是说 像下面这样的东西保证可以工作 typedef struct A A p void v p A p2 v use p2 here 无论什么类型A 对象指针确实可以通过voi
  • NUnit Assert.Equals 与 Assert.AreEqual

    有什么区别 Assert Equals and Assert AreEqual Assert NotNull and Assert IsNotNull Assert Equals 是对象比较 Assert AreEquals 被重载以比较
  • 在 Node 模块导出的函数上使用 `jest.spyOn`

    In Jest https jestjs io 为了监视 并可选择模拟实现 方法 我们执行以下操作 const childProcess require child process const spySpawnSync jest spyOn
  • 使用 .NET 获得快速 RPC 的最简单方法?

    在 NET 中获取 RPC 最简单的方法是什么 我看到有 NET Remoting和WCF 根据维基百科 WCF是 NET Remoting的后继者 到目前为止 我只尝试了远程处理的东西 这似乎非常简单 到目前为止 我也没有遇到任何应用程序
  • 如何对每一行执行语句并返回整个结果

    这是上一个问题的延续 查找具有匹配行的组 https stackoverflow com questions 42700771 find groups with matching rows 我有一张表 其中包含人和他们拥有的汽车 Name
  • (已解决)如何用jq读取100+GB的文件而不耗尽内存

    我有一个 100 GB 的 json 文件 当我尝试用 jq 读取它时 我的计算机继续运行我们的 ram 有没有办法在限制内存使用的同时读取文件 或者有其他方法来读取非常大的 json 文件 我在命令中输入的内容 jq keys fileN
  • 如何使用 Cabal 列出所有已安装的软件包及其版本?

    是否有一个简单的命令 选项可以让您做到这一点 我可以用grep但我想知道是否有内置选项 我们可以简单地这样做 cabal list installed
  • python-social-auth 是否需要会话

    我正在构建一个带有 API 后端 使用 DRF 构建 和 angularjs 客户端的 django 应用程序 我的目标是使用 JWT 代替会话来完全解耦服务器和客户端 我正在尝试整合python 社交 身份验证 https github
  • SQL 中的日期范围交集

    我有一个表 其中每一行都有开始和结束日期时间 这些跨度可以是任意短或长 我想查询具有两个开始和停止日期时间的所有行的交集总持续时间 如何在 MySQL 中做到这一点 或者您是否必须选择与查询开始和停止时间相交的行 然后计算每行的实际重叠并在
  • 更改输入焦点上占位符范围的字体颜色

    我有一个输入字段 里面有一个跨度占位符 我想做的是在单击输入字段时更改占位符的颜色 这是一个 jsFiddle 其中包含我的领域的示例 http jsfiddle net Vbnj2 http jsfiddle net Vbnj2 最好的方
  • 在 C# 中将 Html 转换为 Docx [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想在 C 中将 html 页面转换为 docx 我该怎么做 我的解决方案使用Html2OpenXml
  • 使用node.js从Firestore中的子集合中删除文档

    我想从 Firebase 子集合中删除文档 我尝试通过以下方式做到这一点 firestore collection categories doc categoryId collection books doc bookId delete 但
  • 为什么插入排序是排序或近似排序数组的最佳算法?

    所以我猜它是因为它只是比较 A k 和 A k 1 并在一次扫描中实现 但它仍然不清楚 有人可以更好地解释一下吗 谢谢 This link http www sorting algorithms com 显示了一个不同类型数据集排序算法的图
  • Blazor - 比较上一个和下一个状态

    我在 Blazor 中有一个学生表 它来自 api 我还收到推送数据来更新学生信息 这基本上是数据库更改后的分数 推送工作正常 分数为正在更新 但我还想将分数更改后表中已更新的字段的背景颜色更改为仅 td 标签的红色几秒钟 我的代码如下 f
  • 在 Bootstrap 面板上调用事件展开

    我正在开发一个流程 我们使用 Bootstrap 风格的手风琴 不是 jQuery UI 手风琴 要求是当用户展开手风琴时调用服务 这是 HTML div class accordion dashboard div class panel
  • 如何清除 WPF WebBrowser 中特定站点的 cookie?

    如何删除特定网站或其页面的身份验证 cookie 目前 如果我通过 WPF WebBrowser 使用 OAuth 2 0 登录 我的登录会话将被保存 但我想在每次关闭应用程序时重置会话 public partial class VKLog