Приложение
У меня есть сервисный API на моем сервере, который доступен по адресу 213.209.253.6:7209.
Мне нужно связаться с API с веб-сайта (php) на сервере, размещенном на 3-м (Аруба), и из моей внутренней сети через программу c ++.
ENV
Ситуация 1 (разработка)
Веб-сайт все еще находится в фазе разработки, поэтому запуск xampp на локальном хосте и запрос к API через внешний ip или ip внутренней сети, исправная работа, а также код на c ++ не имеют проблем. Запросы через браузер и консоль curl когда-либо работали;
Ситуация 2 (производство)
Сайт работает с доменом на стороннем сервере. Сбой запросов для смешанного контента (веб-сайт в https и API в http) довольно разумный. Чтобы решить эту проблему, я изменил файл httpd.conf API сервера, загрузив ssl_moudle, настроив сертификаты .key, .crt и ca-bundle и прослушивая 7210 для защищенных запросов.
Ситуация 3 (производство SSL)
API хорошо реагирует на (как безопасные, так и небезопасные соединения): браузер, консоль curl, код javascript (ajax) действующего веб-сайта, код php и код веб-сайта javascript ** (только от localhost) **
API не отвечает на работающий производственный веб-сайт из кода curl php и из кода curl c ++ в программе, работающей в локальной сети;
OUTPUT
для php
«Не отвечающий» означает, что запрос остается без ответа до тех пор, пока соединение не закроется само по себе или я не закрою его с таймаутом. Никакие данные не были обменены никакой другой информацией из curl_getinfo () или curl_error () (также в режиме VERBOSE). Нет журнала Apache на сервере API.
для с ++
Также здесь «не отвечает» означает, что запрос остается без ответа до закрытия соединения, но apache регистрирует его с помощью:
(access_log)
192.168.1.113 - - [06/Apr/2019:11:40:33 +0200] "GET HTTP://192.168.1.130:7209/ HTTP/1.1" 400 226
(error_log)
[Sat Apr 06 11:01:23.937408 2019] [core:debug] [pid 12567:tid 3000998720] vhost.c(1169): [client 192.168.1.113:59008] AH02417: Replacing host header '192.168.1.130:7209' with host '192.168.1.130:7209' given in the request uri
[Sat Apr 06 11:01:23.937915 2019] [authz_core:debug] [pid 12567:tid 3000998720] mod_authz_core.c(820): [client 192.168.1.113:59008] AH01626: authorization result of Require all granted: granted
[Sat Apr 06 11:01:23.937936 2019] [authz_core:debug] [pid 12567:tid 3000998720] mod_authz_core.c(820): [client 192.168.1.113:59008] AH01626: authorization result of <RequireAny>: granted
[Sat Apr 06 11:01:44.196715 2019] [reqtimeout:info] [pid 12567:tid 3000998720] [client 192.168.1.113:59008] AH01382: Request body read timeout
Snippets
Я борюсь с этим уже 2 дня ...
здесь только код c ++, код php примерно одинаков с разным синтаксисом, но с одинаковым результатом ...
if (curl) {
string st_url = "";
const char *url= st_url.c_str();
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_POST, 1L);
string st_postfields = "mystuff";
const char *postfields= st_postfields.c_str();
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postfields);
//curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false);
//curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, false);
//curl_easy_setopt(curl, CURLOPT_PORT, 7209);
//curl_easy_setopt(curl, CURLOPT_PROXY, "192.168.1.130:7209");
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
res = curl_easy_perform(curl);
Я прокомментировал то, что нашел в сети и попробовал безрезультатно.
Ситуация 4 (НЕТ SSL - актуально)
Я думаю, что настоящая проблема заключается в измененной конфигурации серверного API, поэтому я откатился без ssl_module и мой файл httpd.conf:
Listen 7209
ServerName 127.0.0.1:7209
DocumentRoot "/usr/local/apache2/htdocs"
<Directory "/usr/local/apache2/htdocs">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
Результаты не изменились с ситуации 3 на 4