You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用WinHttpSendRequest从localhost接收数据遇ERROR 12175的解决方法

解决WinHTTP访问localhost时出现ERROR 12175的问题

首先,咱们先搞清楚ERROR 12175到底是什么:这个错误码对应的是WINHTTP_ERROR_SSL_INVALID_CERTIFICATE,本质是SSL证书验证失败导致的。你代码里在调用WinHttpOpenRequest时加了WINHTTP_FLAG_SECURE标志,这个标志会强制要求建立HTTPS连接并严格验证服务器证书的合法性,但localhost通常没有受信任的SSL证书——甚至可能你的本地服务器根本没配置HTTPS,只是跑的HTTP服务,这就导致WinHTTP直接拒绝完成请求。而浏览器访问时会给你手动忽略证书错误的选项,所以能正常拿到结果。

针对你需要同时支持外网连接和本地测试的需求,这里给你几个可行的修改方案:

方案1:根据服务器地址动态调整请求规则

既然外网需要HTTPS(带证书验证),本地测试可以灵活处理,你可以根据server变量的值来动态设置请求标志,甚至跳过本地的证书验证:

情况1:本地服务器跑的是HTTP(无需SSL)

如果你的localhost服务是HTTP协议,直接去掉本地请求的WINHTTP_FLAG_SECURE标志即可:

// 动态设置请求标志
DWORD requestFlags = 0;
if (wcscmp(server, L"localhost") != 0) {
    // 外网服务器启用HTTPS
    requestFlags = WINHTTP_FLAG_SECURE;
}

// 创建请求句柄时使用动态生成的标志
if (hConnect) hRequest = WinHttpOpenRequest(hConnect, L"GET", serverRequest, NULL, WINHTTP_NO_REFERER, WINHTTP_DEFAULT_ACCEPT_TYPES, requestFlags);

情况2:本地服务器配置了HTTPS(用自签名证书)

如果本地是HTTPS服务但用的是自签名证书,那需要在发送请求前添加代码跳过证书验证:

if (hRequest) {
    // 针对localhost跳过SSL证书验证
    if (wcscmp(server, L"localhost") == 0) {
        DWORD dwFlags = SECURITY_FLAG_IGNORE_UNKNOWN_CA | 
                        SECURITY_FLAG_IGNORE_CERT_DATE_INVALID | 
                        SECURITY_FLAG_IGNORE_CERT_CN_INVALID;
        WinHttpSetOption(hRequest, WINHTTP_OPTION_SECURITY_FLAGS, &dwFlags, sizeof(dwFlags));
    }
    // 发送请求
    bResults = WinHttpSendRequest(hRequest, WINHTTP_NO_ADDITIONAL_HEADERS, 0, WINHTTP_NO_REQUEST_DATA, 0, 0, 0);
}

方案2:检查端口配置是否正确

你当前用的是INTERNET_DEFAULT_HTTP_PORT(80端口),如果你的本地HTTPS服务跑在443端口,需要把端口参数改成INTERNET_DEFAULT_HTTPS_PORT,不过还是会遇到证书问题,所以结合方案1的跳过验证会更稳妥。

方案3:给localhost配置可信证书(长期测试用)

如果想完全模拟外网的HTTPS环境,可以给本地服务器生成一个自签名证书,并将其添加到系统的受信任根证书存储中。这个步骤相对繁琐,适合长期的本地HTTPS测试场景,临时测试的话方案1效率更高。

最后还有个小细节:你的serverRequest里用了&(HTML转义后的&),WinHTTP不会自动处理这个转义,建议直接改成&,也就是把L"/php/TestCURL.php?data=1&param=Gesendete Daten!"修改为L"/php/TestCURL.php?data=1&param=Gesendete Daten!",避免参数解析出错。

内容的提问来源于stack exchange,提问作者Storm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 09:03:06