首页 新闻 搜索 专区 学院

winform控件WebBrowser中的网页使用window.open(js)打开新窗体丢失Cookie,如何解决

0
悬赏园豆:120 [已解决问题] 解决于 2021-04-17 10:44

winform窗体里里嵌入了一个WebBrowser中,里面放了一个网页A,A里面有一个链接,点击这个链接会打开IE,展示网页B。但是点击链接后Cookie丢失了,B重定向到了登录页。

请问如何操作才能让弹出的窗体还是登录状态?谢谢

尝试过把弹出页B放也到WebBrowser里面,但是B里面的JS报错了,因为B的JS调用了window.opener,放到WebBrowser了这个变量肯定是得不到了。

也尝试过:把A的window.open改成window.openModelDialog(因为A放在WebBrowser里面,所有可以往里加JS代码),这样Cookie不丢,但是弹出窗体的window.opener为空了(用window.open打开B,B里面才能得到window.opener)。

网站不是我们自己做的。

会长的主页 会长 | 专家六级 | 园豆:10036
提问于:2021-03-01 15:51
< >
分享
最佳答案
0

未找到解解方案

会长 | 专家六级 |园豆:10036 | 2021-04-17 10:44
其他回答(3)
0

微软都放弃了很多年了,所以你更应该放弃这个控件。ms最新webview2,或者其他如cef等等方式。

收获园豆:40
花飘水流兮 | 园豆:12547 (专家六级) | 2021-03-01 16:40

这个网站只能用IE......

支持(0) 反对(0) 会长 | 园豆:10036 (专家六级) | 2021-03-01 16:46

@会长: 没注意到是园子里老熟人。

1.ms ie可以设置(缓存,解决cookie问题),这个很久很久以前弄过,但已经找不到代码了,这个你可以试试。

2.你也可以试试webview2,毕竟edge系列的,虽然已经cef化,但ms的东西,兼容性(貌似一些网银不得行)可能可行。

这个老控件太久没有用了,以前也没有去做拦截篡改等更深入操作,提供不了更具体的方法了,祝你好运。网页这玩意儿凑合运行ok就行了,大部分前端(ie时代都叫美工)都扯不清楚,何况当初的ie678的精神分裂症。

我撤了,准备收拾包裹下班了。

支持(0) 反对(0) 花飘水流兮 | 园豆:12547 (专家六级) | 2021-03-01 17:11

实在不行,你不妨试试代理篡改,这样相当于服务器就是你的。

支持(0) 反对(0) 花飘水流兮 | 园豆:12547 (专家六级) | 2021-03-01 17:18

@花飘水流兮: 下班好早啊。谢谢回复

支持(0) 反对(0) 会长 | 园豆:10036 (专家六级) | 2021-03-01 17:21
0

打开新窗体就不再webbrower里了,可以设置成新窗口在当前窗口打开,我也做过用webbrower做爬虫抓数据

收获园豆:40
jqw2009 | 园豆:2274 (老鸟四级) | 2021-03-02 14:07
0

你已经打开IE了,已经离开当前的winform程序 了,肯定没有cookies

收获园豆:40
为乐而来 | 园豆:1081 (小虾三级) | 2021-03-10 14:19

好像不是,WebBrower就是IE,我用百度试了,如果我在WebBrower中登录,再打开IE已经是登录状态。

支持(0) 反对(0) 会长 | 园豆:10036 (专家六级) | 2021-03-12 12:39

@会长: 不知道你解决没有,有办法可以,可以重写A页的window.open方法 打开以后重新new 一个webbrower在里面打开,这样不用跳转到ie里面去了。
可以看这里:C# WebBrowser 取 window.open 新窗口 url的方法 https://www.cnblogs.com/soundcode/p/13689607.html

支持(0) 反对(0) 为乐而来 | 园豆:1081 (小虾三级) | 2021-04-23 09:28

@为乐而来: 谢谢你,我试试

支持(0) 反对(0) 会长 | 园豆:10036 (专家六级) | 2021-04-23 09:59
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册