作者:胡印鉴_473 | 来源:互联网 | 2023-09-23 15:02
问题描述:1.程序界面为一个CWEBBROWSER22.不管现在的IE环境有没有设置代理,CWEBBROWSER2都采用代理。应该怎么设置,或者实现?-----------------
问题描述:
1.程序界面为一个CWEBBROWSER2
2.不管现在的IE环境有没有设置代理,CWEBBROWSER2都采用代理。
应该怎么设置,或者实现?
----------------------------------------------------------
为什么这样做?
采用cwebbrowser2控件都是访问localhost:80/www/XXX 目录下本机的一个网站,如果有人IE设置的代理,会直接影响到程序。让程序根本就没有办法使用。访问失败。所以我想,不管什么情况,我的程序都不应该理会IE的代理设置,或者自己设置成不采用代理。 如果程序里面调用相关的API去设置代理相关属性,会不会影响到IE的代理设置呢?按道理是不应该干涉的。因为目标是,不管代理有没有设置,怎么设置,都应该能让这个程序访问本地的网站。IE的设置,它不应该干涉。
应该如何来思考,分析,解决这个问题?
请知道的朋友兄弟,说说,先谢谢了!
10 个解决方案
很重要的一点是CWebBrowser::Navigate()不能指定一个带端口的地址
你的机器环境和我可能有所不同
我的结果是127.0.0.1和localhost根本不受IE“为本地地址旁路代理”设置的影响
也不受高级-〉例外中列表的影响
但是类似192.168.1.2这样的给网卡分配的本地地址就会受高级-〉例外列表的影响
我是windows 2003 X64 SP2 R2; apache1.3(跑在cygwin上);IE8
为CWebBrowser2增加一个对象m_ie之后
_variant_t vbsUrl(L"127.0.0.1");
m_ie.Navigate2(&vbsUrl, NULL, NULL, NULL, NULL);
这样没有任何问题 ie中设置代理服务器 并且清空“旁路本本地地址”也没有用
这时候也可以用_variant_t vbsUrl(L"localhost");
但是这时候不能用类似_variant_t vbsUrl(L"192.168.1.2");那样会失败
但如在高级-〉例外中添加了192.168.1.2则可以用_variant_t vbsUrl(L"192.168.1.2");
此设置对应的注册表是HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
的一个字符串值ProxyOverride
如果你需要用192.168.1.2这样的格式来访问本地http服务 就要把这个值设置为192.168.1.2;
后面有没有代表你是否选定了IE设置-〉连接-〉局域网设置-〉为本地地址旁路代理服务器
这个据我测试 有没有无所谓
如果你用127.0.0.1/xxx或者localhost/xxx来访问就没有任何问题 但不能localhost:80/xxx这样就是了
所以你可以直接在代码中改注册表 还要注意修改注册表之后 IE或控件要重新启动 设置才会生效 不然没效果
总而言之 你可以
_variant_t vbsUrl(L"127.0.0.1/xxx");
m_ie.Navigate2(&vbsUrl, NULL, NULL, NULL, NULL);
>dirdirdir3 谢谢。
恩。使用127.0.0.1本地地址,是不受影响的。
但是127.0.0.1,AJAX异步会出错,所以我才用localhost.有没有通过设置cwebbrowser2方法来实现。不受IE设置影响。
IE底层用WinInet的,可以用UrlSetSessionOption更改代理设置。
>jiangsheng
谢谢问题已经解决
主要信息:如下
http://msdn.microsoft.com/en-us/library/ms775125(VS.85).aspx
希望有相关问题的朋友,也重这得到启发。
结贴
谢谢各位回帖的朋友。谢谢