3

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

有什么论据可以用来达到同样的效果吗?我需要使用 MSXML2.ServerXMLHTTP,因为我正在异步使用它,而 WinHTTP 不支持它。

示例代码 JScript/VBA:

var H = new ActiveXObject('MSXML2.ServerXMLHTTP.6.0')
    H.open('GET', 'https://stackoverflow.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://stackoverflow.com/', true)
    H.setRequestHeader('Cookie', 'yesplease')
    H.setClientCertificate('CURRENT_USER\MY\USERNAME')  <-- this line DOES work
    H.send

有没有办法可以将 setClientCertificate 与 MSXML2.ServerHTTP 对象一起使用?

4

1 回答 1

2

你要

.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
于 2019-09-14T05:48:58.563 回答