检查认证后在TUXEDO上使用libcurl时停止 [英] Stop when using libcurl on tuxedo after check certification
本文介绍了检查认证后在TUXEDO上使用libcurl时停止的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试使用libcurl调用REST API。
我的服务器环境:Oracle TUXEDO(PRO*C)、AIX 7.1
在提示符下使用命令"curl"确实可以工作。 我还可以使用详细选项查看整个日志。
但当我尝试在使用libcurl的客户端编译时使用它时,它一直停止。
根据日志。
上面写着…
- 正在尝试123.456.789.00:443…
- 连接到"API url"(123.456.789.00)端口443(#0)
- ALPN,提供http/1.1
- 密码选择:ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
- 已成功设置证书验证位置:
- Cafile:/var/ssl/cert.pem
- CAPath:/var/ssl/certs/
到此为止!
在提示符下使用cURL命令时 上面说的完全一样, 但仍在继续…- TLSv1.2(Out),TLS标头,证书状态(22):
- TLSv1.2(Out),TLS握手,客户端Hello(1): … … ETC…
有人能给我一些建议吗?
或者是否有其他方法可以在Pro*C或C上轻松调用RestAPI?
========================================
我所做的只是使用libcurl的示例。
static sample(){
CURL *curl;
CURLcode res;
curl = curl_easy_init();
struct curl_slist *list = NULL;
if(curl){
curl_easy_setopt(curl, CURLOPT_URL, "https://ApiUrl.here");
list = curl_slist_append(list, "Content-Type: application/json");
list = curl_slist_append(list, "ApiKey : realKey");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, list);
curl_easy_setopt(curl, CURLOPT_SSLVERIFYPEER, 1L);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 1L);
res = curl_easy_perform(curl);
curl_slist_free_all(list);
if(res != CURLE_OK){
fprintf(stderr, "curl_easy_perform() failed : %s
", curl_easy_strerror(res));
}
curl_easy_cleanup(curl);
}
}
推荐答案
list = curl_slist_append(list, "ApiKey : realKey");
我认为这一行才是问题所在。
头字段名和冒号之间不允许有空格。在……里面 过去,处理此类空格的不同导致了 请求路由和响应处理中的安全漏洞。一个 服务器必须拒绝任何接收到的包含以下内容的请求消息 头字段名和带有响应代码的冒号之间的空格 400(糟糕的请求)。代理必须从 在将消息转发到下游之前响应消息。
删除空格:
list = curl_slist_append(list, "ApiKey: realKey");
这篇关于检查认证后在TUXEDO上使用libcurl时停止的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文