IE写入COOKIE的问题

Marcelxx 2019-02-18 04:53:16
之前封装了WebBrowser,使用IE封装的。我们需要将CEF的COOKIE传入webbrowser,使用的是InternetSetCookieEx将CEF的信息传递给封装的webbrowser,这样的目的是用webbrowser打开的网站可以不用登陆,这个步骤是没有问题的。但是发现WebBrowser存在一些问题,效果没有原生的IE好。
现在使用原生的IE打开一些业务系统,也需要将CEF的cookie信息传入给IE,使用的也是InternetSetCookieEx,但是打开业务系统发现没有登陆成功,即应该是写入COOKIE信息没有成功。
请问有什么方法来解决这个问题?
...全文
359 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
encoderlee 2019-02-22
  • 打赏
  • 举报
回复
没有expires的cookie,只在调用InternetSetCookieEx函数的进程中有效,你调用InternetSetCookieEx函数的代码和webbrowser在同一个进程中运行,就有效。 如果你能把cookie通过进程间通信发到IE进程(iexplore.exe)中,在IE进程中调用InternetSetCookieEx函数,也是有效的,但是这样做涉及到代码注入,太复杂化。所以不推荐 而有expires的cookie则不受限制,在哪里调用InternetSetCookieEx函数都行,只要在cookie有效期内,任何webbrowser和IE进程都有效,可以写个简单的WEB服务端来进行测试,把问题简单化,只监视一条cookie,测一下看看
Marcelxx 2019-02-22
  • 打赏
  • 举报
回复
引用 3 楼 charlessimonyi 的回复:
没有expires的cookie,只在调用InternetSetCookieEx函数的进程中有效,你调用InternetSetCookieEx函数的代码和webbrowser在同一个进程中运行,就有效。
如果你能把cookie通过进程间通信发到IE进程(iexplore.exe)中,在IE进程中调用InternetSetCookieEx函数,也是有效的,但是这样做涉及到代码注入,太复杂化。所以不推荐

而有expires的cookie则不受限制,在哪里调用InternetSetCookieEx函数都行,只要在cookie有效期内,任何webbrowser和IE进程都有效,可以写个简单的WEB服务端来进行测试,把问题简单化,只监视一条cookie,测一下看看

解决了,是在设置JSSESION这个COOKIE的设置方式要做特殊处理就行了。
Marcelxx 2019-02-21
  • 打赏
  • 举报
回复
引用 1 楼 charlessimonyi 的回复:
你设置的Cookie是不是没有expires?
没有expires的cookie为会话级cookie,只在当前进程中有效,进程一结束就没了,而且,你的程序和IE不是一个进程,当然也无效。
可以强制给cookie加一个合适的expires,这样cookie便会存在本地磁盘文件上,成为持久cookie,就可以跨进程共享了,当然在IE中也有效了

非常感谢你的回答,同时有几个疑问。
1,我们将WebBrowser封装在另外一个进程当中的,从主进程当中获取到CEF的COOKIE信息,然后通过进程间通信将COOKIE信息交给了WebBrowser进程,该进程在写COOKIE,没有什么问题。这是第一种情况,也有COOKIE没有expires的,但是那些业务系统都能正常登陆,也是跨了进程的啊。
2,按照同样的逻辑,我们在打开IE之前也使用相同的函数写入COOKIE,和上面是一样的COOKIE,没有做任何改变,但是使用IE打开的业务系统就没有登陆,即使我们给没有expires的cookie加上过期时间,仍然登陆不成功。
基于上述的两种操作,WebBrowser就能登录成功,而IE却不能登录成功。
encoderlee 2019-02-19
  • 打赏
  • 举报
回复
你设置的Cookie是不是没有expires?
没有expires的cookie为会话级cookie,只在当前进程中有效,进程一结束就没了,而且,你的程序和IE不是一个进程,当然也无效。
可以强制给cookie加一个合适的expires,这样cookie便会存在本地磁盘文件上,成为持久cookie,就可以跨进程共享了,当然在IE中也有效了

3,248

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧