MSXML2.ServerXMLHTTP客户端证书

时间:2019-09-13 08:28:22

标签: vba web-scraping jscript winhttp msxml2

我在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对象一起使用?

1 个答案:

答案 0 :(得分:1)

你想要

.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
相关问题