從c#程序啓動ie並傳遞cookie
打開默認瀏覽器並傳遞cookie
打開一個web瀏覽器使用c#應用程序並添加請求頭web
從wpf程序打開默認瀏覽器並定位到一個url ,而且向這個url發起請求時傳遞一個cookie 。 今天碰到這個需求 ,當時就懷疑這樣的可行性 ,
因而收集資料研究之 。c#
首先看到一個說法: cookie是寫到磁盤上某個地方的文件 ,不一樣瀏覽器的存儲位置不一樣 。那麼上面的問題就變成了:
1.從wpf程序寫cookie到默認瀏覽器存儲cookie的位置 ;
2.打開默認瀏覽器並定位到一個url(這個時候瀏覽器應該已經讀取並傳遞了這個cookie)。瀏覽器
程序把cookie寫入到瀏覽器存儲cookie的位置這個可行嗎 ,每一個瀏覽器的cookie標準都不同 ,這個應該不可行(願意研究的研究看看)。cookie
微軟提供了ie 的寫入方法
DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern bool InternetSetCookie(string lpszUrlName,
string lbszCookieName, string lpszCookieData);app
這個方法只適用 ie 和 微軟的webbrowser控件 ,this
其餘瀏覽器就不知道提供相似功能沒。url
傳遞cookie不行 ,我就想傳遞請求頭可行性 , 查到目前啓動默認瀏覽器的方式有這兩種,第二種嚴格意義上不是,它是一個控件
Process.Start("iexplorer.exe", "www.msn.ca") or webBrowser1.Navigate("www.msn.ca", true).code
第二種有重載能夠傳遞請求頭 :internet-explorer
this.webBrowser1.ScriptErrorsSuppressed = true;
this.webBrowser1.Navigate("http://stackoverflow.com",
null,
new byte[]{},
"Myheader: ABC;");ip
若是使用ie 是能夠實現的 , 若是是默認瀏覽器,那就比較困難,須要別家瀏覽器提供操做cookie的方法或者權限。
替代解決方案:經過querystring 傳遞參數 或者 header
https://www.codeproject.com/Questions/1004099/How-to-set-cookie-from-console-app-and-open-url-inhttps://stackoverflow.com/questions/976907/sending-cookies-from-c-sharp-application-to-an-internet-explorer-pop-up-windowhttps://social.msdn.microsoft.com/Forums/vstudio/en-US/78b40b9d-acb1-497d-b13f-753cd53fe27e/opening-the-default-web-browser-by-setting-a-cookie-value?forum=csharpgeneralhttps://stackoverflow.com/questions/32308254/open-a-web-browser-using-c-sharp-win-application-and-add-request-headers-in-the