把html源文件输入内嵌浏览器,要求cookie的图片不能显示!

seeku 2006-02-17 02:54:54
我有一个小程序,使用了HtmlView,使用IID_IHTMLDocument2接口的
write 方法来显示我要输出的网页。

具体实现差不多这个样子
LPDISPATCH pHtmlDoc = GetHtmlDocument();// get_Document();
hr=pHtmlDoc->QueryInterface(IID_IHTMLDocument2,(void **)&phmDoc2);

phmDoc2->open(_bstr_t("text/html"),
_variant_t("_self") ,
_variant_t(),
_variant_t(),
NULL);

phmDoc2->write(sfArray);
phmDoc2->close();

如果我要输出的内容里面包含<img src="..."></img> 这类的信息,
HtmlView会自动下载图片和显示。

现在服务器增加了安全要求,下载图片的时候要向服务器发送cookie认证。
cookie的内容我知道的,但是却无法让内嵌的IWebBrowser下载的时候
发送Cookie!这样图片现在就不能显示了。

我现在通过IID_IHTMLDocument2的put_cookie方法,设置cookie。

设置完了以后,我使用Navigate2方法,内嵌的IWebBrowser可以成功
下载到图片的。(说明我用的方法也不全错)

不过通过 流 输入到IID_IHTMLDocument2的情形,如果HTML源文件中
包含<img src="..."></img> 这类的信息,这个浏览器会向指定的URL
发送请求,下载图片,却不会发送cookie,所以服务器不让下载。


不知道大家是否了解我的问题,这个问题困扰我一个星期了。理论上我
可以自己下载图片,然后修改html的源文件中的图像地址为本地,这样
也可以显示,不过比较麻烦。最后能通过什么方法让IWebBrowser自动
发送cookie。

这个版很久没有来过了,以前在这里受到很多老大的帮助,尤其是蒋老大的恩惠。

谢谢大家!!
...全文
185 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
蒋晟 2006-02-21
  • 打赏
  • 举报
回复
how about IHTMLDocument2::CreateElement or IMarkupServices::createElement?
leo_van 2006-02-18
  • 打赏
  • 举报
回复
谢谢楼上的

现在就有 <base href="http://xxx.yyy.zzz/aaa/bbb/" />
否则图片都显示不了。

我在IE中设置了持久的cookie了,还是不行,真是奇怪
myy 2006-02-17
  • 打赏
  • 举报
回复
如果已经设置Cookie, 则问题可能出在img的src的URL上。

因为“通过 流 输入到IID_IHTMLDocument2”时,整个文档的url是about:blank,
img的src是相对url,所以根本找不到。

你试试在流输入之前,这样处理一下:

<html>
<head>
<base href="http://xxx.yyy.zzz/aaa/bbb/" />
...

加入base标签,注意“http://xxx.yyy.zzz/aaa/bbb/”与img的src正好能合成为完整的图片url


3,055

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC HTML/XML
社区管理员
  • HTML/XML社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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