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
)。
网站不是我们自己做的。
未找到解解方案
微软都放弃了很多年了,所以你更应该放弃这个控件。ms最新webview2,或者其他如cef等等方式。
这个网站只能用IE......
@会长: 没注意到是园子里老熟人。
1.ms ie可以设置(缓存,解决cookie问题),这个很久很久以前弄过,但已经找不到代码了,这个你可以试试。
2.你也可以试试webview2,毕竟edge系列的,虽然已经cef化,但ms的东西,兼容性(貌似一些网银不得行)可能可行。
这个老控件太久没有用了,以前也没有去做拦截篡改等更深入操作,提供不了更具体的方法了,祝你好运。网页这玩意儿凑合运行ok就行了,大部分前端(ie时代都叫美工)都扯不清楚,何况当初的ie678的精神分裂症。
我撤了,准备收拾包裹下班了。
实在不行,你不妨试试代理篡改,这样相当于服务器就是你的。
@花飘水流兮: 下班好早啊。谢谢回复
打开新窗体就不再webbrower里了,可以设置成新窗口在当前窗口打开,我也做过用webbrower做爬虫抓数据
你已经打开IE了,已经离开当前的winform程序 了,肯定没有cookies
好像不是,WebBrower就是IE,我用百度试了,如果我在WebBrower中登录,再打开IE已经是登录状态。
@会长: 不知道你解决没有,有办法可以,可以重写A页的window.open方法 打开以后重新new 一个webbrower在里面打开,这样不用跳转到ie里面去了。
可以看这里:C# WebBrowser 取 window.open 新窗口 url的方法 https://www.cnblogs.com/soundcode/p/13689607.html
@为乐而来: 谢谢你,我试试