2009-12-16 101 views
1

我正在使用Web瀏覽器控件並加載使用基本身份驗證的網站。我在導航例程的附加標題中傳遞用戶名和密碼。問題是導航網站時不保留標題。帶有附加頭文件的.NET Web瀏覽器控件

I.E. 我登錄到網站並在http頭中傳遞用戶名和密碼。當我點擊鏈接訪問另一個頁面時,標題被刪除,網站要求提供憑據。如果我只是將該網站輸入到IE中,並且在首次在所有頁面上結轉標題時登錄。

任何人有任何想法,我可以讓頁面保留標題,所以用戶永遠不必認證?

Dim sHeaders As String 
Dim HelpBrowser As New WebBrowser 

sHeaders = "Authorization: Basic: " & System.Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes("UserName:Password")) & Chr(13) & Chr(10) 

Me.HelpBrowser.Navigate("http://www.mysite.com", True, Nothing, sHeaders) 
+0

其他頁面在哪裏顯示?在你的程序窗口或在IE中的新標籤? – 2009-12-17 20:26:38

+0

你有沒有找到解決方案?我也有同樣的問題。開始一個新的導航不適合我... – Simone 2017-05-30 11:30:55

回答

3

假設認證的用戶名和密碼是user1和pass1。使用下面的語句來提供,不會發生重定向後丟失基本的認證信息:

Me.HelpBrowser.Navigate("http://user1:[email protected]") 
2

在URL中傳遞的憑證已在默認情況下即每KB834489被禁用。

註冊表更改必須作出允許這種航行:

禁用Windows Explorer和Internet Explorer中的新默認行爲,在下面的註冊表項中創建iexplorer.exeexplorer.exe的DWORD值,並設置其值數據爲0。

•對於程序的所有用戶,在下面的註冊表項設置的值:

HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_HTTP_USERNAME_PASSWORD_DISABLE 

•僅用於程序的當前用戶,設置在下面的註冊表鍵值:

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_HTTP_USERNAME_PASSWORD_DISABLE 

欲瞭解更多信息,請參見: http://support.microsoft.com/default.aspx?scid=kb;[LN];834489

0

下面是在C#中,但我希望有對VB類似的導航事件。我發現,爲了能夠在沒有授權標題的情況下瀏覽網站,我必須爲每個新頁面執行以下操作,否則用戶會再次被提示。該解決方案也不需要用戶:啓用password @ site語法。

private bool _redirected = false; 
    private const string BaseUrl = @"http://mySite"; 

    private void Navigate() 
    { 
     var helpUrl = BaseUrl; 
     var authHeader = GetAuthHeader(); 

     _docWindow.Browser.Navigate(helpUrl, string.Empty, null, authHeader);   
     _docWindow.Browser.Navigating += Browser_Navigating; 

    } 

    private string GetAuthHeader() 
    { 
     byte[] authData = UnicodeEncoding.UTF8.GetBytes(_userName + ":" + _password); 
     string authHeader = "Authorization: Basic " + Convert.ToBase64String(authData); 
     return authHeader; 
    } 

    void Browser_Navigating(object sender, System.Windows.Navigation.NavigatingCancelEventArgs e) 
    {    
     if (_redirected) 
     { 
      _redirected = false; 
      return; 
     } 
     var newPage = BaseUrl + e.Uri.AbsolutePath; 

     e.Cancel = true; 
     _redirected = true; 
     _docWindow.Browser.Navigate(newPage, string.Empty, null, GetAuthHeader()); 
    }