所以我正在制作一个测试应用程序,该应用程序登录到一个网站,如果给定的凭据有效,则将它们分开。当我的Web浏览器成功登录后,程序开始重复处理以检查剩余的凭据,从而对登录的帐户进行缓存。我尝试过
Me.WebBrowser1.Refresh(WebBrowserRefreshOption.Completely)
和其他一些方法,例如导航到about:blank,但即使我重新启动程序也没有成功,webbrowser1会打开缓存的登录帐户。我要使Web浏览器在获得良好的登录后处于完全重置(启动)状态。
答案 0 :(得分:2)
您可以在导航到站点之前禁用缓存(包括cookie)。
为此,您可以使用InternetSetOption
API函数并将INTERNET_OPTION_SUPPRESS_BEHAVIOR(81)
选项的值设置为INTERNET_SUPPRESS_COOKIE_PERSIST(3)
的值。
示例
我尝试了以下示例,该示例在登录outlook.com
时禁用了缓存,但是它的工作方式类似于启动新会话:
Imports System.Runtime.InteropServices
Public Class Form1
<DllImport("wininet.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Public Shared Function InternetSetOption(hInternet As IntPtr, dwOption As Integer, _
lpBuffer As IntPtr, dwBufferLength As Integer) As Boolean
End Function
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim ptr = Marshal.AllocHGlobal(4)
Marshal.WriteInt32(ptr, 3)
InternetSetOption(IntPtr.Zero, 81, ptr, 4)
Marshal.Release(ptr)
WebBrowser1.Navigate("https://outlook.com")
End Sub
End Class
要查找有关这些标志的更多信息,请查看Windows Internet Option Flags。
注意:您可以在我的另一篇文章中找到此答案的C#版本here。