使网络浏览器删除其缓存

时间:2018-06-30 09:38:38

标签: .net vb.net winforms webbrowser-control

所以我正在制作一个测试应用程序,该应用程序登录到一个网站,如果给定的凭据有效,则将它们分开。当我的Web浏览器成功登录后,程序开始重复处理以检查剩余的凭据,从而对登录的帐户进行缓存。我尝试过

Me.WebBrowser1.Refresh(WebBrowserRefreshOption.Completely)

和其他一些方法,例如导航到about:blank,但即使我重新启动程序也没有成功,webbrowser1会打开缓存的登录帐户。我要使Web浏览器在获得良好的登录后处于完全重置(启动)状态。

1 个答案:

答案 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