这个问题困扰了我一两天,试了各种方法都不行。本来在http下做的系统完全没问题,但是改成https就有问题了。具体是在使用"Msxml2.serverXMLHTTP.6.0"这对象的send方法时总是报错。错误消息就是:
“msxml6.dll 错误 '80072f7d' 安全频道支持出错”
网上到处搜这错误提示也没找到解决的办法,然后用英文的在谷歌搜也没找到什么有用的信息,大多数是让用各个版本的xmlhttp尝试,正好我也罗列了一堆,顺手写下:
Msxml2.XMLHTTP
Microsoft.XMLHTTP
Msxml2.XMLHTTP
Msxml2.XMLHTTP.4.0
Msxml2.XMLHTTP.6.0
Msxml2.serverXMLHTTP.3.0
WinHttp.WinHttpRequest.5.1
还有写让设置setoption什么的,也没有用,有提到什么TLS协议的,可是不知道怎么弄,略过。
网友里有个技术大牛,陪我找了一上午也没解决,不过最终我们研究了下,问题清晰起来了。这个网站是用Nginx反向代理的方式实现的https,目前的现状是这个网站下的https资源谁都无法用xmlhttp请求到,外网请求它报错,自己本网站里的url请求它也错,都同样的错误。猜测应该是和这个Nginx有关,正准备放弃,退回到http了。
忽然一想,可以咨询服务器商的技术支持看看,哪怕付费也好。服务器是西数的,于是提交工单,下午1点40提交的,技术很快就开始处理了,因为我这没几分钟远程窗口就被踢下了。期间联系我要求重启什么的,技术也挺辛苦,来回弄到3点多还没好,我就打算等他说没办法,然后退回http了。 结果4点多一点的他说弄好了,我上去一试果然ok了。
这里不得不夸下西数(西部数码)的技术,技术过硬,响应及时、十分耐心,竟然解决了全网我搜不到的答案。
处理方法:
1,服务器上开启tls1.0 tls1.1 tls1.2 服务器上开启TLSv1 v2那些用
2,nginx中也要设置TLSv1 TLSv1.1 TLSv1.2 不要设置开启tls1.3,大小写部分,但是注意1不要写成1.0,否则会报错,设置好了后要重启Nginx