WebBrowser 控件和 cookie

2024-02-13

我对 WebBrowser 控件和 cookie 有疑问。

首先,当人们在普通的 Web 浏览器(在我的例子中是 IE9)中导航时会发生什么:

1.1.我打开网页http://www.gmail.com http://www.gmail.com.

我输入我的用户名/密码,
我留下复选框“保持登录" 未经检查的并点击“Sign in",
IE9 打开我的 GMail 页面,其中列出了我的所有邮件。那没问题。

1.2.在GMail页面的顶部有很多链接,如“日历”、“文档”等。

当我单击“文档”链接时,我的文档页面将在 IE9 中的单独选项卡中打开。无需询问名称/密码等额外登录信息。这也很好。

现在,当我在 WebBrowser 控件中重复所有这些操作时会发生什么(我创建了一个非常简单的 VB.NET 应用程序,其中包含单个 WebBrowser 控件)。

2.1.在表单加载事件中执行以下代码:

Private Sub MyForm_Load(sender As System.Object, e As System.EventArgs)
    Me.MyWebBrowser.Navigate("http://www.gmail.com")
End Sub

2.2.我在 WebBrowser 控件中输入我的 GMail 登录信息(名称和密码),

2.3.当我单击“文档”链接时,将打开 IE9 的新实例,

2.4. Google 没有显示我的文档列表,而是要求我在 IE9 窗口中再次登录。为什么?为什么我必须再次输入我的凭据?

我认为 cookie 有问题,它们在步骤 2.2 中设置不正确。您是否知道哪里出了问题以及必须采取哪些措施才能正确设置 cookie?

提前致谢,
Sal

附加信息:

我的 WebBrowser NewWindow 事件函数实现为:

Private Sub MyWebBrowser_NewWindow(sender As System.Object, e As System.ComponentModel.CancelEventArgs) Handles MyWebBrowser.NewWindow
    Dim CookiesArr As String() = MyWebBrowser.Document.Cookie.Split(";")
    For Each Cookie In CookiesArr
        Dim Idx As Long = Cookie.IndexOf("=")
        If Idx <> -1 Then
            Dim CookieName As String = Cookie.Substring(0, Idx).Trim
            Dim CookieValue As String = Cookie.Substring(Idx + 1).Trim
            InternetSetCookie("http://www.google.com", Nothing, CookieName + " = " + CookieValue + "; expires = Sat,05-Jan-2013 00:00:00 GMT")
        End If
    Next
End Sub

我相信 InternetSetCookie() 方法应该将 cookie 永久存储在“C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Cookies”目录中,以便在打开需要授权的 Google 页面时重用。


那是因为 Web 浏览器控件正在单独的 IE9 窗口中打开您的链接,对吧?如果您打开它,或者在 Winforms 程序的另一个 Web 浏览器控制窗口中打开它,或者在您单击链接的同一窗口中打开它,那么它应该可以正常工作。

他们使用会话cookie(在内存中)来保存您的登录信息,而不是写入硬盘驱动器的信息,这就是为什么当您运行另一个进程时,信息(在内存会话cookie中)不存在或传播到新进程过程。

因此,要拦截链接点击并在您选择的 wb 窗口中打开它,您需要拦截 newwindow 事件,取消导航并使用 .navigate 重新导航到您选择的 wb,如果您需要这方面的帮助,请告诉我,但是网上有很多。

另外,请记住,Web 浏览器控件默认使用 IE7,即使您安装了 IE9,也可以通过注册表进行更改。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WebBrowser 控件和 cookie 的相关文章

随机推荐

  • 使用 waitKey 来暂停和播放视频

    我有一个VideoCapture在 OpenCV 中 我可以成功显示给定的视频 我现在想做的是通过按一个键来暂停和播放 可选哪个键 只要有效即可 我一直在读关于waitKey但有一些关于这整件事我不明白 ASCII 以及如何绑定键 我的理解
  • Nexus 和上传 .NET 应用程序的工件

    Nexus 是否可以用作 NET 应用程序构建输出的工件管理器 我非常了解 Nexus 可以成为出色的 nuget 代理和内部工件管理器 但是我需要 Nexus 在这些库的下游进行操作并存储 TeamCity 构建的输出 我研究过使用 RE
  • 使用泛型类中定义的泛型参数调用非泛型方法

    这是我的问题 public class MyClass
  • 使用亚马逊API获取产品详细信息

    我有以下代码来输出来自亚马逊的商品列表 但我不确定如何访问特定产品 带有 Summery 评论等 任何帮助 将不胜感激
  • 如何使用毕加索的颜色作为占位符图像?

    我想使用毕加索将颜色设置为占位符图像 我试过这个 int placeHolderColor2 Color rgb 20 20 20 Picasso with context load item getImageUrls get 0 plac
  • 如何在 iOS 的 flutter 中将图像流缓冲区转换为 jpeg 图像字节?

    当我们处理相机时flutter 我们用Camera plugin It has startImageStream返回的方法CameraImage cameraImage数据类型 In iOS cameraImage format is bg
  • 检查 DI-Graph 中是否存在任何路径

    如果我有一个有向图 如何检查所有节点对 a b 是否创建路径 Example Input v1 v2 v5 v6 v2 v3 v3 v4 v4 v5 v0 v1 我需要检查该图中是否存在至少一条路径 而无需多次访问每个节点 我已经尝试过回溯
  • 是否可以将参数传递到通过选项卡访问的 FB 应用程序的回调 URL?

    我有这个 Facebook 应用程序 它向粉丝页面添加自定义选项卡 您可以通过以下 URL 访问该选项卡 http www facebook com pages PAGE NAME HERE PAGE ID v APP ID http ww
  • 如何在Python中模拟CPU和内存压力

    我想知道是否有人用 python 编写了模拟 cpu 和内存压力的代码 我看到一段加载 cpu 的代码 但如何强制它们在 90 的使用率下工作 一个节点主要有 4 种经常使用的资源 有效内存 中央处理器周期 储存空间 网络负载 上传和下载
  • 更改 DataMember 的 XML 命名空间

    我有两个DataContract我正在使用 a 序列化为 XMLDataContractSerializer 我为两个不同的指定了不同的命名空间DataContract然而 有一个DataMember每一个DataContract属于相同的
  • HTMLCollection、NodeList 和对象数组之间的区别

    当谈到 DOM 时 我总是对 HTMLCollections 对象和数组感到困惑 例如 有什么区别document getElementsByTagName td and td myTable and td 是对象 jQuery 对象 为什
  • 如何生成一个不以 0 开头且具有唯一数字的随机 4 位数字?

    这几乎可以正常工作 但数字有时以 0 开头 import random numbers random sample range 10 4 print join map str numbers 我找到了很多例子 但没有一个能保证序列不会以0
  • 解析 HTML:成人分类系统

    我正在研究网络上使用的不同且 有时已过时 的评级 分类标准 IE PICS http www w3 org PICS POWDER http www w3 org 2007 powder ICRA http www fosi org icr
  • 为什么 JSON.Parse 说“无效字符”?

    我在 IE 中运行了一段 JS 其中包含以下行 var data JSON parse skill SK AUTO DEV TEST kind IS REQUIRED 谁能告诉我这有什么问题吗 因为这不是有效的 JSON 您需要在属性名称周
  • 两列,100%高度固定流体

    不使用表格如何实现下面的效果呢 例子 http enstar nl example php http enstar nl example php 该示例目前可能不可见 名称服务器应该已更改 但我的主机更新它们的速度不是那么快 今天晚些时候应
  • AJAX (XMLHttpRequest) 进度监控不适用于 Service Workers

    我想将网络表单转换为离线工作 最初 我会在用户完成每个步骤后将表单信息存储在 Web 服务器上的 SQL 数据库中 其中一个步骤包括上传图像 为此我实现了一个进度条 添加服务工作者后 我注意到进度条不再起作用 进度条会显示 但永远不会更新以
  • 如何通过代码向 yaml 文件添加新条目

    我有 yaml 文件 我需要使用 go 代码在运行时向其中添加数据 路径就像下面这样 我的意思是 这是 yaml 文件 其下有一个条目sif of snk dev spec mec tolerations effect NoSchedule
  • 将 url 表放入 `data.frame` R-XML-RCurl

    我正在尝试将网址表放入data frame 在其他示例中 我发现以下代码有效 library XML library RCurl theurl lt https es finance yahoo com q cp s BEL20 BR ta
  • 无法在vb.net中将文件写入硬盘

    您好 我检查了此处存在的所有问题对我没有帮助 所以我问 好的 我们开始吧 我尝试将文件从 资源 复制到 C Test 文件夹对我不起作用 这是我尝试过的 首先 我将 test txt 文件放在资源中复制到 C Test 文件夹 但出现错误
  • WebBrowser 控件和 cookie

    我对 WebBrowser 控件和 cookie 有疑问 首先 当人们在普通的 Web 浏览器 在我的例子中是 IE9 中导航时会发生什么 1 1 我打开网页http www gmail com http www gmail com 我输入