我有一個WebBrowser控件和cookie的問題。WebBrowser控件和cookies
首先,什麼時候一個在正常的Web瀏覽器(IE9在我的情況)導航情況:
1.1。我打開網頁http://www.gmail.com。
輸入我的用戶名/密碼,
我離開選中「留在簽署」複選框,然後單擊「登錄」,
IE9打開我的Gmail頁面,我的所有郵件中列出。那沒問題。
1.2。在Gmail的頁面頂部有很多鏈接,如「日曆」,「文檔」等。
當我單擊「文檔」鏈接時,我的文檔頁面在IE9的單獨選項卡中打開。沒有額外的登錄信息作爲名稱/ psw被詢問。這也沒關係。
現在,當我在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登錄信息(名稱和psw),
2.3。當我點擊「文檔」鏈接時,打開IE9的新實例,
2.4。 Google並沒有顯示我的文檔列表,而是讓我在IE9窗口中重新登錄。爲什麼?爲什麼我必須再次輸入我的憑證?
我認爲cookie有問題,並且它們在步驟2.2中沒有正確設置。你有什麼想法什麼是錯誤的,必須做些什麼才能正確設置cookie?
由於提前,
薩爾
附加信息:
我有我的web瀏覽器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在需要授權的Google頁面打開時,在「C:\ Users \ Administrator \ AppData \ Roaming \ Microsoft \ Windows \ Cookies」目錄中重新使用。
增加了額外的信息,以我的職務。實際的代碼與發佈的代碼有點不同,但都不適用於我。在Gmail頁面點擊「文檔」鏈接時,我仍然可以獲取登錄頁面。而且,是的,修改了註冊表項FEATURE_BROWSER_EMULATION以關閉兼容性視圖模式。 – Sal 2012-03-10 22:37:58
@sal重讀我的第三段,答案仍然存在。此外,不要嘗試讀取或重置cookie,因爲這是訪問硬盤cookie我相信,而不是會話cookie。如果您將新的窗口請求重定向到第二個wb控件(將其放在窗體中),那麼它應該可以正常工作,找到我?請記住,取消newwindow事件中的當前導航並從e中獲取URL。或發件人。使用剛剛從新窗口事件接收到的URL,執行導航到第二個wb控件。取消布爾應該在e。中,設置爲true來取消。讓我知道。 – 2012-03-12 17:56:23
謝謝你的幫助,但我的問題是,我想要在NewWindows事件中打開新的IE9實例。我不想用「e.Cancel = False」取消默認導航,我同意新的IE窗口將打開,我同意一些cookie將被存儲在我的本地驅動器中。我的問題是,在NewWindow事件中設置的cookie不會對瀏覽器產生任何影響,並且始終打開登錄頁面。 – Sal 2012-03-15 03:52:39