从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