MSXML2.ServerXMLHTTP 客户证书

MSXML2.ServerXMLHTTP clientcertificate

我在 JScript 中使用 MSXML2.ServerXMLHTTP / VBA 并且想要设置客户端证书路径。在 WinHTTP.WinHTTPRequest 中,我可以使用选项“.setClientCertificate”,但这在 MSXML2.ServerXMLHTTP 中似乎不存在。

我可以使用任何参数来获得相同的效果吗?我需要使用 MSXML2.ServerXMLHTTP,因为我正在异步使用它,而 WinHTTP 不支持它。

示例代码JScript/VBA:

var H = new ActiveXObject('MSXML2.ServerXMLHTTP.6.0')
    H.open('GET', 'https://whosebug.com/', true)
    H.setRequestHeader('Cookie', 'yesplease')
    H.setClientCertificate('CURRENT_USER\MY\USERNAME')  <-- this line doesn't work
    H.send

所以在 setClientCertificate 行出现上述错误。但是,下面的方法可行(但如前所述,我不能使用 WinHTTP)

var H = new ActiveXObject('WinHTTP.WinHTTPRequest.5.1')
    H.open('GET', 'https://whosebug.com/', true)
    H.setRequestHeader('Cookie', 'yesplease')
    H.setClientCertificate('CURRENT_USER\MY\USERNAME')  <-- this line DOES work
    H.send

有什么方法可以将 setClientCertificate 与 MSXML2.ServerHTTP 对象一起使用?

你想要

.setOption 3, "\value\......."

这里有详细说明:

https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms763811(v%3Dvs.85) under `SXH_OPTION_SELECT_CLIENT_SSL_CERT`

语法

oServerXMLHTTPRequest.setOption option, value

根据您的代码

H.setOption 3, "CURRENT_USER\MY\USERNAME"

对于常量

SXH_OPTION_SELECT_CLIENT_SSL_CERT = 3 '&H3