C++ 我在卡萨布兰卡遇到了问题+;使用包含https的URL时

C++ 我在卡萨布兰卡遇到了问题+;使用包含https的URL时,c++,https,casablanca,C++,Https,Casablanca,我们正在使用资源所有者凭据使用内部OAuth Svr获取访问令牌。如果url中不包含任何https,那么一切都正常,但当我在其中包含https时,一切都失败了 我们使用https部署了所有站点: 下面是一个非常简单的失败代码。如果我在其中包含https,我不知道为什么会出现异常 try { http_client api(U("https://172.27.12.207/AuthSvr"), m_http_config); ucout << "Requesting a

我们正在使用
资源所有者凭据
使用内部
OAuth Svr
获取访问令牌。如果url中不包含任何https,那么一切都正常,但当我在其中包含https时,一切都失败了

我们使用https
部署了所有站点:

下面是一个非常简单的失败代码。如果我在其中包含
https
,我不知道为什么会出现异常

try
{
    http_client api(U("https://172.27.12.207/AuthSvr"), m_http_config);
    ucout << "Requesting account information:" << std::endl;
    ucout << "Information: " << api.request(methods::GET, U("identity/.well-known/openid-configuration")).get().extract_json().get() << std::endl;
    //TestRestAPI().wait();
}
catch (...)
{
    ucout << "Unknown Error";
}

尝试验证自签名证书时会出现此问题。 这通常出现在开发中,在开发中没有使用有效的证书,但生成了一个动态证书

可以通过禁用验证来解决此问题

web::http::client::http_client_config config;
config.set_validate_certificates(false);

auto client = std::make_shared<web::http::client::http_client>(U("https://localhost:8081/"), config);
web::http::client::http\u client\u config;
config.set_validate_证书(false);
自动客户端=标准::使共享(U)https://localhost:8081/(pdf格式),;

请确保舒尔仅在调试测试代码中完成此操作,而不是最终产品的一部分。

//创建HTTP请求句柄。 shRequest=WinHttpOpenRequest(shConnect,L“GET”,L”/robots.txt), NULL,WINHTTP\u无\u引用程序, WINHTTP\u默认\u接受\u类型, 0 ); //WINHTTP_标志(安全)


在我的例子中,一个类似的问题通过注释掉WINHTTP\u标志\u安全标志得到了解决。

您能写下您得到的异常吗?我处理异常以捕获web::http::http\u异常,我看到错误“WinHttpSendRequest:12175:发生了安全错误”该问题与证书验证有关。由于大多数开发环境使用自签名证书,验证失败,导致HTTPS事务失败。解决方法是禁用证书验证。将此粘贴为答案。
web::http::client::http_client_config config;
config.set_validate_certificates(false);

auto client = std::make_shared<web::http::client::http_client>(U("https://localhost:8081/"), config);