2009-12-16 4 views
1

웹 브라우저 컨트롤을 사용하고 기본 인증을 사용하는 웹 사이트를로드하고 있습니다. 탐색 루틴의 추가 헤더에 사용자 이름과 암호를 전달합니다. 문제는 헤더 탐색이 사이트를 탐색하는 동안 유지되지 않는다는 것입니다.추가 헤더가있는 .NET 웹 브라우저 컨트롤

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의 새 탭에? –

+0

해결책을 찾았습니까? 나는 같은 문제를 가지고있다. 새로운 탐색 기능이 작동하지 않습니다 ... – Simone

답변

3

인증을위한 사용자 이름과 암호가 user1과 pass1이라고 가정합니다. 다음 문을 사용하면 리디렉션 후에 손실되지 않는 기본 인증 정보를 제공 할 수 있습니다.

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

URL의 전달 자격 증명은 기본적으로 KB834489 당 IE에서 비활성화되어 있습니다.

레지스트리 변경 탐색 이런 종류의 할 수 있도록 만들 수 있어야합니다

Windows 탐색기와 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에 대해 유사한 탐색 이벤트가 희망. Authorization Header가 손실되거나 제거되지 않고 사이트를 탐색 할 수있는 것으로 확인되면 사용자가 다시 묻는 각 새 페이지마다 다음을 수행해야합니다. 이 솔루션은 또한 user : 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()); 
    } 
관련 문제