MSXML6.dll 拒绝访问将 HTTP 重定向到 HTTPS

MSXML6.dll Access Denied redirecting HTTP to HTTPS

我在 vbscript-like 代码中使用 MSXML6 通过 HTTP 下载数据。但是服务器现在需要连接才能升级到 HTTPS。 这导致 xmlhttp object 失败并显示错误“msxml6.dll: Access is denied.

Set http = CreateObject("msxml2.xmlhttp.6.0")
http.open "Get", URL, False 'false is for 'async'
http.send

使用嗅探工具,在收到 redirection-to-https 响应后停止操作,并生成错误,但没有进一步的详细信息。

请求 http://host/doc.php(纯 http),返回的 headers 看起来像这样:

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已经是https,操作会正常恢复,没有任何投诉。

我可以在服务器端做些什么来说服 xmlhttp 和平地将连接升级到 https 吗?

更新客户端应用程序中的代码是不可能的,因为它是一个遗留应用程序,有很多用户在使用它,没有更新机制。

要求用户更新 URL 在 http 之后添加一个 "s" 是可行的,但太麻烦了,因为联系他们告诉他们也不是一件容易的事。

编辑:

结论在。总结是这是一项 client-side 保护功能,无法从服务器端覆盖它。

中提到的问题是您需要使用不限于访问受 IE 信任的站点并受 IE 安全策略限制的服务器版本的 XMLHTTP。这是因为 XMLHTTP 是为 client-side 设计的,而 ServerXMLHTTP 是专门为 server-side 用途设计的。