none
關於Windows Form裡放的WebBrowser, 不支援Cookie嗎? RRS feed

  • 問題

  • 這幾天做個小實驗
    發現這樣做

    WebBrowser, 不支援Cookie?
    導致需要登入帳密的遠端網站
    無法正常登入

    這有解嗎?

    同樣URL的網站
    用IE7可正常登入
    所以應該不是冲到IE的安全性設定才是
    player
    2009年5月11日 上午 06:17

解答

所有回覆

  • 請教winform下 Cookies運用
    http://social.msdn.microsoft.com/Forums/zh-TW/233/thread/3175044b-5d2a-4ad8-a599-6ac582713889


    在另一篇,似乎是可以的...
    • 已編輯 Joe Hung 2009年6月2日 下午 01:18
    2009年5月11日 上午 06:27
  • 我是想在

    private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)

    中去收 Cookie


    string cookieStr = webBrowser1.Document.Cookie;
    去接收,串成一個字串的Cookie

    但是
    我想不出來該覆寫 webBrowser1 的哪一個事件
    去做 Cookie 寫到 Web-Server的動作?

    您所提的方式
    似乎對於 webBrowser 不是很方便?
    有更好的建議嗎?

    player
    2009年5月11日 上午 06:36
  • 透過下列連結方式也可以參考看看 :
    http://www.cnblogs.com/cai9911/archive/2008/03/05/1091443.html

    微軟技術支援中心(CSS) - http://www.dotblogs.com.tw/lolota/
    • 已提議為解答 Lolota Lee 2009年5月18日 上午 02:45
    • 已標示為解答 Lolota Lee 2009年5月19日 上午 07:37
    2009年5月18日 上午 02:45
  • 透過下列連結方式也可以參考看看 :
    http://www.cnblogs.com/cai9911/archive/2008/03/05/1091443.html

    微軟技術支援中心(CSS) - http://www.dotblogs.com.tw/lolota/

    您說的這篇
    我之前也有用Google找到過
    但是

    ck.Domain 怎麼辦? 總不能跟他一樣寫死吧?

    此外
    CookieContainer 出自 System.Net
    所以要先 using System.Net;
    才能用


    		private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    		{
    			SetCookie();
    		}
    
    		private void SetCookie()
    		{
    			string cookieStr = webBrowser1.Document.Cookie;
    			if (cookieStr.Length != 0)
    			{
    				string cookieDomainStr = "www.5ilrc.com";  // <-- 還差這個不知道該怎麼自動抓Domain了
    
    				CookieContainer myCookieContainer = new CookieContainer();
    				string[] cookstr = cookieStr.Split(';');
    				foreach (string str in cookstr)
    				{
    					string[] cookieNameValue = str.Split('=');
    					Cookie ck = new Cookie(cookieNameValue[0].Trim().ToString(), cookieNameValue[1].Trim().ToString());
    					ck.Domain = cookieDomainStr;
    					myCookieContainer.Add(ck);
    				}
    			}
    		}
    
    


    player
    2009年5月18日 上午 03:02
  • 如果要抓Domain name, 可以透過 webBrowser1.Document.Domain 來獲得.


    微軟技術支援中心(CSS) - http://www.dotblogs.com.tw/lolota/
    • 已提議為解答 Lolota Lee 2009年5月18日 上午 08:21
    • 已標示為解答 Lolota Lee 2009年5月19日 上午 07:37
    2009年5月18日 上午 03:28
  • 看起來 Cookie 有過了
    謝了

    但是
    如果我不要讓他跳出新視窗
    而要用原本的 webBrowser1 去顯示原本要彈出的新視窗的URL的那一頁的話
    有辦法接嗎?

    因為不論是用
    private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
    還是
    private void webBrowser1_NewWindow(object sender, CancelEventArgs e)

    都接不到新的URL
    player
    2009年5月18日 上午 03:46
  • 可以, 您可以參考下列連結 :
    http://hi.baidu.com/zhitenglin/blog/item/5d1614f3b09fe6cc0a46e011.html


    作法是去把連結中的Attribute改掉.
    微軟技術支援中心(CSS) - http://www.dotblogs.com.tw/lolota/
    2009年5月18日 上午 03:57