wb-hx510875 6 лет назад
Родитель
Сommit
5a451d16d4

+ 4 - 0
core/include/alibabacloud/core/ClientConfiguration.h

@@ -43,12 +43,16 @@ class ALIBABACLOUD_CORE_EXPORT ClientConfiguration {
   void setConnectTimeout(const long connectTimeout);
   void setReadTimeout(const long readTimeout);
 
+  bool rejectUnauthorized() const;
+  void setRejectUnauthorized(const bool rejectUnauthorized);
+
  private:
   std::string endpoint_;
   NetworkProxy proxy_;
   std::string regionId_;
   long connectTimeout_;
   long readTimeout_;
+  bool rejectUnauthorized_ = true;
 };
 }  // namespace AlibabaCloud
 

+ 3 - 0
core/include/alibabacloud/core/HttpClient.h

@@ -34,9 +34,12 @@ class HttpClient {
   virtual HttpResponseOutcome makeRequest(const HttpRequest &request) = 0;
   NetworkProxy proxy()const;
   void setProxy(const NetworkProxy &proxy);
+  bool rejectUnauthorized()const;
+  void setRejectUnauthorized(const bool &rejectUnauthorized);
 
  private:
   NetworkProxy proxy_;
+  bool rejectUnauthorized_;
 };
 }  // namespace AlibabaCloud
 #endif  // CORE_INCLUDE_ALIBABACLOUD_CORE_HTTPCLIENT_H_

+ 8 - 0
core/src/ClientConfiguration.cc

@@ -71,4 +71,12 @@ void ClientConfiguration::setReadTimeout(const long readTimeout) {
   readTimeout_ = readTimeout;
 }
 
+bool ClientConfiguration::rejectUnauthorized() const {
+    return rejectUnauthorized_;
+}
+
+void ClientConfiguration::setRejectUnauthorized(const bool rejectUnauthorized) {
+    rejectUnauthorized_ = rejectUnauthorized;
+}
+
 }  // namespace AlibabaCloud

+ 1 - 0
core/src/CoreClient.cc

@@ -33,6 +33,7 @@ CoreClient::CoreClient(const std::string &servicename,
     : serviceName_(servicename), configuration_(configuration),
       httpClient_(new CurlHttpClient) {
   httpClient_->setProxy(configuration.proxy());
+  httpClient_->setRejectUnauthorized(configuration.rejectUnauthorized());
 }
 
 CoreClient::~CoreClient() { delete httpClient_; }

+ 7 - 2
core/src/CurlHttpClient.cc

@@ -163,8 +163,13 @@ CurlHttpClient::makeRequest(const HttpRequest &request) {
   }
 
   curl_easy_setopt(curlHandle_, CURLOPT_URL, url.c_str());
-  curl_easy_setopt(curlHandle_, CURLOPT_SSL_VERIFYPEER, 1L);
-  curl_easy_setopt(curlHandle_, CURLOPT_SSL_VERIFYHOST, 2L);
+  if (rejectUnauthorized()) {
+    curl_easy_setopt(curlHandle_, CURLOPT_SSL_VERIFYPEER, 1L);
+    curl_easy_setopt(curlHandle_, CURLOPT_SSL_VERIFYHOST, 2L);
+  } else {
+    curl_easy_setopt(curlHandle_, CURLOPT_SSL_VERIFYPEER, 0L);
+    curl_easy_setopt(curlHandle_, CURLOPT_SSL_VERIFYHOST, 0L);
+  }
   curl_easy_setopt(curlHandle_, CURLOPT_HEADERDATA, &response);
   curl_easy_setopt(curlHandle_, CURLOPT_HEADERFUNCTION, recvHeaders);
 

+ 8 - 0
core/src/HttpClient.cc

@@ -36,4 +36,12 @@ void HttpClient::setProxy(const NetworkProxy &proxy) {
   proxy_ = proxy;
 }
 
+bool HttpClient::rejectUnauthorized()const{
+    return rejectUnauthorized_;
+}
+
+void HttpClient::setRejectUnauthorized(const bool &rejectUnauthorized) {
+    rejectUnauthorized_ = rejectUnauthorized;
+}
+
 }  // namespace AlibabaCloud