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


類似問題

從c#程序啟動ie並傳遞cookie
打開默認瀏覽器並傳遞cookie
打開一個web瀏覽器使用c#應用程序並添加請求頭

猜想


從wpf程序打開默認瀏覽器並定位到一個url ,並且向這個url發起請求時傳遞一個cookie 。 今天碰到這個需求 ,當時就懷疑這樣的可行性 ,
於是收集資料研究之 。

 

調查

首先看到一個說法: cookie是寫到磁盤上某個地方的文件 ,不同瀏覽器的存儲位置不同 。那么上面的問題就變成了:
1.從wpf程序寫cookie到默認瀏覽器存儲cookie的位置 ;
2.打開默認瀏覽器並定位到一個url(這個時候瀏覽器應該已經讀取並傳遞了這個cookie)。

 

程序把cookie寫入到瀏覽器存儲cookie的位置這個可行嗎 ,每個瀏覽器的cookie標准都不一樣 ,這個應該不可行(願意研究的研究看看)。

微軟提供了ie 的寫入方法
DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern bool InternetSetCookie(string lpszUrlName,
string lbszCookieName, string lpszCookieData);

這個方法只適用 ie 和 微軟的webbrowser控件 ,

其他瀏覽器就不知道提供類似功能沒。

傳遞cookie不行 ,我就想傳遞請求頭可行性 , 查到目前啟動默認瀏覽器的方式有這兩種,第二種嚴格意義上不是,它是一個控件
Process.Start("iexplorer.exe", "www.msn.ca") or webBrowser1.Navigate("www.msn.ca", true).

 

第二種有重載可以傳遞請求頭 :

this.webBrowser1.ScriptErrorsSuppressed = true;
this.webBrowser1.Navigate("http://stackoverflow.com",
null,
new byte[]{},
"Myheader: ABC;");

 

最終結論 ,

如果使用ie 是可以實現的 , 如果是默認瀏覽器,那就比較困難,需要別家瀏覽器提供操作cookie的方法或者權限。
替代解決方案:通過querystring 傳遞參數 或者 header

 

 

 


資料:


https://www.codeproject.com/Questions/1004099/How-to-set-cookie-from-console-app-and-open-url-in
https://stackoverflow.com/questions/976907/sending-cookies-from-c-sharp-application-to-an-internet-explorer-pop-up-window
https://social.msdn.microsoft.com/Forums/vstudio/en-US/78b40b9d-acb1-497d-b13f-753cd53fe27e/opening-the-default-web-browser-by-setting-a-cookie-value?forum=csharpgeneral
https://stackoverflow.com/questions/32308254/open-a-web-browser-using-c-sharp-win-application-and-add-request-headers-in-the

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM