我正在类似vbscript的代码中使用MSXML6通过HTTP下载数据。但是服务器现在需要连接才能升级到HTTPS。
这导致xmlhttp
对象失败,并显示错误“ msxml6.dll: Access is denied.
”
Set http = CreateObject("msxml2.xmlhttp.6.0")
http.open "Get", URL, False 'false is for 'async'
http.send
使用嗅探工具,操作会在收到重定向到https的响应后停止,并且将生成错误而没有更多详细信息。
请求http://host/doc.php
(普通http),返回的标题如下所示:
HTTP/1.1 301 Moved Permanently
Date: Fri, 19 Jul 2019 23:59:30 GMT
Content-Type: text/html; charset=iso-8859-1
Transfer-Encoding: chunked
Connection: keep-alive
Location: https://host/doc.php
Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
Server: cloudflare
但是,如果请求的URL已经是http s ,则该操作将正常恢复,而不会引起任何投诉。
在服务器端,我是否可以说服xmlhttp
和平地升级到https的连接?
在客户端应用程序中更新代码是不可能的,因为它是一个遗留应用程序,有很多用户在使用它,而没有更新机制。
要求用户在http之后添加“ s”来更新URL是可行的,但是麻烦太多了,因为要告诉他们告诉他们也不是一件容易的事。
编辑:
结论在this comment中。总结是,这是一种客户端保护功能,不能从服务器端覆盖。
答案 0 :(得分:1)
Xmlhttp request is raising an Access Denied error中提到的问题是,您需要使用XMLHTTP的服务器版本,该服务器版本不限于访问IE信任的站点,也不限于IE安全策略。这是因为XMLHTTP是为客户端设计的,而ServerXMLHTTP是专门为服务器使用的设计的。