如何從桌面程序向瀏覽器傳遞cookie或自定義header

相似問題

從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

相關文章
相關標籤/搜索