如何从桌面程序向浏览器传递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

相关文章
相关标签/搜索