如何从桌面程序向浏览器传递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
如何从桌面程序向浏览器传递cookie或自定义header的更多相关文章
- jquery + node 通过 CORS 实现跨域访问,支持cookie和自定义header
跨域有多种方式,现在的情况看来还是CORS更适合一些,有很多优点,比如浏览器正式支持.支持post.可以控制跨域访问的网站等. 我们来看看node如何实现cors方式的跨域.在网上找到了一些代码,考过 ...
- dropwizard使用cors支持跨域浏览器取不到自定义header问题
dropwizard支持cors的配置如下: public void run(Configuration conf, Environment environment) { // Enable CORS ...
- Atitit.使用引擎加脚本架构的设计 使用php,js来开发桌面程序。。
Atitit.使用引擎加脚本架构的设计 使用php,js来开发桌面程序.. 1. 引擎加脚本架构 跨平台,桌面与web的优势1 2. 架构桌面引擎(java,c#)2 3. php桌面引擎要点2 3. ...
- 关于PHP中浏览器禁止Cookie后,Session能使用吗?
sessionid是存储在cookie中的,解决方案如下: Session URL重写,保证在客户端禁用或不支持COOKIE时,仍然可以使用Session session机制.session机制是一种 ...
- 使用curl传递cookie错误的问题
工作中发现一个问题, 通过curl调用接口传递cookie操作用户的数据, 接口的程序解析不了cookie中的数据. 经过排查发现curl发送的cookie数据为 TZ+Gn+rEk+6G4d 而接口 ...
- 用node-webkit(NW.js)创建桌面程序
以往写windows桌面程序需要用MFC.C#之类的技术,那么如果你只会web开发技术呢?或者说你有一个网站,但是你想把你的网站打包成一个桌面应用程序,该如何做呢? 答案就是用node-webkit这 ...
- 突破短板,传统桌面程序 使用webapi 扩展迎合web和移动端融合的需求
传统桌面程序不能完全被web和移动端替代,但是需要改造.这里要说的是巧用webapi把以前用dll和com组件,ocx等方式做接口,做分布式开发的方式,改成restful 风格api的方式实现跨平台, ...
- 删除浏览器浏览器删除cookie方法
上班之余抽点时光出来写写博文,希望对新接触的朋友有帮助.今天在这里和大家一起学习一下删除浏览器 文章目录导航 适用范围及演示工具 什么是cookie? cookie有什么作用? ie6/ie7/ie8 ...
- 网页程序 vs 桌面程序
网页程序 vs 桌面程序 阅读: 评论: 作者:Rybby 日期: 来源:rybby.com 所谓的网页程序就是指以网页作为程序的操作界面,通过脚本语言“javascript”或其它客户端语言 ...
随机推荐
- linux 下 .o 文件, .a文件,.so文件的区别
最近在unbuntu环境下开发代码,由于很少使用linux开发环境,所以对linux编译方面了解更少,关于.o, .a, .so文件和可执行文件一直很困惑 今天特意查了一下关于它们的区分: .o 就相 ...
- 学习SpringMVC时遇到的一些问题
1. 找不到mapping 比较弱智的问题,忘了在对应的类上加上 @Controller 注解了 2. Model中设置的值不显示 Eclipse 自动生成的web.xml 是 2.3版本的,网上说改 ...
- spring eureka 启动过程
spring-eureka 在springCloud是类似于 zookeeper的存在,主要负责服务的注册发现. 1 由于是Servlet应用,所以Eureka需要通过servlet的相关监听器 ...
- 「GXOI / GZOI2019」逼死强迫症——斐波那契+矩阵快速幂
题目 [题目描述] ITX351 要铺一条 $2 \times N$ 的路,为此他购买了 $N$ 块 $2 \times 1$ 的方砖.可是其中一块砖在运送的过程中从中间裂开了,变成了两块 $1 \t ...
- 剑指Offer的学习笔记(C#篇)-- 求1+2+3+...+n
题目描述 求1+2+3+...+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). 一 . 直接解题吧 芽儿呦,突然觉得,我不说! ...
- jQuery EasyUI/TopJUI创建日期输入框
jQuery EasyUI/TopJUI创建日期输入框 日期时间输入框组件 HTML required:必填字段,默认为false:prompt:显示在输入框的提示性文字:pattern:日期格式 Y ...
- QCTF 2018线上赛 writeup
本次算是被QCTF打趴了,本来做题时间就少(公司无限开会,开了一天,伪借口),加上难度和脑洞的增大,导致这次QCTF又酱油了...就连最基本的签到题都没做出来...这就很气 好了,以下是解题思路 MI ...
- 【ZROI 537】贪心题 题解
[ZROI 537]贪心题 题解 Link Solution 最大的一边直接放到一起贪心即可 着重讲小的一边 已知对于二分图匹配,其答案即为最大流 令时间集合为 \(T = {1,2,3,\dots, ...
- Codeforces 161A(贪心)
要点 我在想贪心是对的那要二分图何用,自己的想法是:二分图最开始并不知道怎么匹配最好所以就按输入顺序连了,之后慢慢修改:而这道匹配也成对匹配但从一开始你就可以知道选哪个最划算,就是贪心地选最小的.不必 ...
- 最长回文子串--轻松理解Manacher算法
最长回文子串这个问题的Manacher算法,看了很多博客,好不容易理解了,做一下记录. 这个算法的核心就是:将已经查询过的子字符串的最右端下标保存下来,在计算下标为i的回文字符串时,不需要从左右相邻的 ...