我正在尝试在经典ASP中构建一个网页,以检查一系列网址的状态。
我的代码如下:
Function TestSite(sURL)
UserAgent = "Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+5.1)"
Set poster = Server.CreateObject("MSXML2.ServerXMLHTTP.6.0")
poster.open "GET", sURL, false
poster.setRequestHeader "User-Agent",UserAgent
poster.send
If poster.status = 200 Then
TestSite = poster.responseText
Else
' ## ERROR ## '
TestSite = ""
End If
Set poster = Nothing
End Function
这些网址都是包含非标准端口号的HTTPS (例如https://somedomain.com:4433/restofurl)
当我在网络浏览器中运行网址时,它们加载得很好,但是当我通过上面的函数进行操作时,我得到了:
A connection with the server could not be established
我用以下替代方法检查了我的功能: 1)不安全的URL - 这很好用 2)没有指定端口的安全URL - 这很好用 3)指定端口443的安全URL - 这很好 4)在目标服务器上指定端口443的安全URL - 这可以正常工作
在此基础上,我确信我的代码是正确的。有没有人有进一步排查的建议?
答案 0 :(得分:1)
问题证明与我们的旧服务器(仍在运行Win2003)相关,并且它们的设置比端口号建议的更加非标准!
最终的解决方案是将代码托管在一些单独的托管上(在运行更新版本Windows的服务器上)。不理想,但至少我们已经有了它的工作。 (我们的未来也会进行服务器升级 - 这有望成为最终的解决方案。)
答案 1 :(得分:0)
这可能意味着运行代码的服务器与您发送请求的服务器没有相同的证书。虽然您使用的浏览器确实有它们。
您可以通过添加此代码(在发送请求之前,当然之前)使服务器忽略特定证书问题来检查这一点,并尝试一些值:
Const SXH_SERVER_CERT_IGNORE_UNKNOWN_CA = 256
Const SXH_SERVER_CERT_IGNORE_WRONG_USAGE = 512
Const SXH_SERVER_CERT_IGNORE_CERT_CN_INVALID = 4096
Const SXH_SERVER_CERT_IGNORE_CERT_DATE_INVALID = 8192
Const SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS = 13056
poster.setOption 2, poster.getOption(2) - SXH_SERVER_CERT_IGNORE_CERT_DATE_INVALID