查看 Trace Log 发现 Wininet 调用的封装类 返回 Error 12057, 它的具体错误内容是:

ERROR_WINHTTP_SECURE_CERT_REV_FAILED
12057
Indicates that revocation cannot be checked because the revocation server was offline (equivalent to CRYPT_E_REVOCATION_OFFLINE).
打开 IE->Tools->Internet Options->Advanced Tab->Security Options->”Check for server certificate revocation(Requires Restart)”
这个选项当前为选中状态(IE8默认是选中的)。取消这个选项,Bug 症状消失。经过测试发现只有 Windows Server 2003 Standard Edition 的 IE 默认选中该项,而且在其他平台即时此选项选中亦不会发生 Error 12057 (Microsoft’s Bug ? or with other options?)。决定通过编码解决这个问题。
其实编码解决这个问题倒是很简单, 在 HttpOpenRequest 后增加如下代码,设置当前 Http 连接选项取消这个检查

DWORD dwFlags = 0;

DWORD dwError = 0;

DWORD dwBuffLen = sizeof(dwFlags);
InternetQueryOption(m_hRequest, INTERNET_OPTION_SECURITY_FLAGS,

(LPVOID)&dwFlags, &dwBuffLen);

dwFlags |= SECURITY_FLAG_IGNORE_REVOCATION;

InternetSetOption(m_hRequest, INTERNET_OPTION_SECURITY_FLAGS, (LPVOID)&dwFlagssizeof(dwFlags)) ;

相关文章:

  • 2022-02-21
  • 2022-12-23
  • 2022-12-23
  • 2021-07-05
  • 2021-11-27
  • 2022-02-07
  • 2021-11-25
猜你喜欢
  • 2022-02-03
  • 2021-04-22
  • 2022-12-23
  • 2022-12-23
  • 2021-06-27
  • 2022-12-23
  • 2021-09-18
相关资源
相似解决方案