VB脚本调用Microsoft.XMLHTTP遇证书无效错误,SetOption方法失效求修复
问题描述
使用VBScript发送HTTP请求时,执行以下代码:
set xmlhttp=CreateObject("Microsoft.XMLHTTP") xmlhttp.Open "Get" url, false, proxyUser, proxyPass xmlhttp.send
触发错误:来自msxml3.dll的“访问该资源所需的安全证书无效”。
尝试添加证书错误忽略逻辑时,使用以下两种写法均失败:
xmlhttp.setOption(2)=13056
xmlhttp.setOption 2, 13056
错误提示均为:对象不支持该属性或方法:'xmlhttp.SetOption',已确认xmlhttp对象非空,需要解决该问题。
修复方案
- 替换XMLHTTP组件版本:
Microsoft.XMLHTTP是旧版组件,不支持SetOption方法,改用高版本的MSXML2.XMLHTTP.6.0组件,该组件支持证书相关配置:set xmlhttp=CreateObject("MSXML2.XMLHTTP.6.0") xmlhttp.SetOption 2, 13056 ' 忽略所有服务器证书错误 xmlhttp.Open "Get", url, false, proxyUser, proxyPass xmlhttp.send - 关于选项值13056:该值对应
SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS,会忽略所有证书相关错误,仅建议在测试环境使用;生产环境应优先排查证书有效性、信任链配置问题,避免跳过证书校验。 - 不推荐的全局修改方案:若必须使用
Microsoft.XMLHTTP,可通过修改注册表全局忽略证书错误,但会影响所有依赖该组件的应用,风险较高:- 打开注册表编辑器,定位到
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings - 新建DWORD类型键值
IgnoreServerCertErrors,设置值为1 - 重启相关应用生效
- 打开注册表编辑器,定位到
内容的提问来源于stack exchange,提问作者xymzh
相关产品推荐
相关产品推荐

