API сервера не отвечает на функцию Curl - PullRequest
0 голосов
/ 06 апреля 2019

Приложение

У меня есть сервисный 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

1 Ответ

0 голосов
/ 09 апреля 2019

По иронии судьбы, после всего, что проблема была довольно простой: сторонний хостинг моего сайта блокировал запросы на нестандартных портах. Я просто попросил (и ждал 2 дня) техническую помощь. Всем известно, что Аруба поддерживает исходящие запросы только на:

  • FTP 21
  • HTTP 80
  • HTTPS 443
  • POP3 110, 995
  • SMTP 465, 587
  • IMAP 143, 993
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...