Post запросы на общедоступный собственный сайт

Я наверное только за, но я не спец и не все всегда понимаю что где и как правильно сделать, что доходит как делать, делаю, а нет, разбираться нужно. А иногда лень приходит, нет вдохновения и забиваю на время. Потом опять тянет что-то где-то покопаться, с новыми силами…

Так это правильный подход. Если дело не идет - остановись, отвлекись на что-то другое, часто решение само приходит :grinning:

я так и не понял как ты без соответствующих записей на виртуальном хостинге через файл hosts на локальном клиенте будешь попадать на свой сайт

Ну да, сорри. Тут юзер агент -ЕСП.
А браузеный запрос, который проходил на хостинге?

Хотя ладно… есть более важные дела… Просто любопытно стало.

Оставь там пока заглушку эту. и Напомни её содержимое. Может поиграю
немного.

Файл там есть и отвечает он json строкой, содержимое будет зависеть от запроса. На пустой запрос ответ все-равно будет как {“kod”:“error”,“message”:“Пустой запрос”}.
Немного сейчас поколдую, верну работоспособность.

Все, selhom.ru/r.php доступна с браузера, недоступно c ESP.
Для сравнения betonodk.beget.tech то же самое доступно хоть с браузера, хоть с ESP (берет данные post запросом из selhom.ru/r.php)

<?php
$data = file_get_contents('php://input');
$options = array(
    'http' => array(
        'header'  => "Content-type: application/json\r\n",
        'method'  => 'POST',
        'content' => http_build_query($data)
    )
);
$context  = stream_context_create($options);
$result = file_get_contents('http://selhom.ru/r.php', false, $context);
if ($result === FALSE) { /* Handle error */ }
header('Content-Type: application/json'); 
echo $result;
?>

ESP:

Сброс данных на http://betonodk.beget.tech
[HTTP] POST... code: 200
received payload:
<<
{"kod":"error","message":"Пустой запрос"}
>>

...@demetra:~$ curl -v selhom.ru/r.php  -A "Mozilla"

*   Trying 185.50.25.21:80...
* Connected to selhom.ru (185.50.25.21) port 80 (#0)
> GET /r.php HTTP/1.1
> Host: selhom.ru
> User-Agent: Mozilla
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 403 Forbidden
< Server: nginx-reuseport/1.21.1
< Date: Thu, 02 Feb 2023 12:43:22 GMT
< Content-Type: text/html
< Content-Length: 163
< Connection: keep-alive
< Keep-Alive: timeout=30
<
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx-reuseport/1.21.1</center>
</body>
</html>
* Connection #0 to host selhom.ru left intact

...@demetra:~$ curl -v selhom.ru/r.php  -A "Mozilla/5.0"
*   Trying 185.50.25.21:80...
* Connected to selhom.ru (185.50.25.21) port 80 (#0)
> GET /r.php HTTP/1.1
> Host: selhom.ru
> User-Agent: Mozilla/5.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Server: nginx-reuseport/1.21.1
< Date: Thu, 02 Feb 2023 12:43:26 GMT
< Content-Type: application/json
< Content-Length: 53
< Connection: keep-alive
< Keep-Alive: timeout=30
< Access-Control-Allow-Origin: *
< Access-Control-Allow-Methods: GET,POST,OPTIONS,DELETE,PUT
< Access-Control-Allow-Headers: *
< X-Powered-By: PHP/7.4.33
<
* Connection #0 to host selhom.ru left intact
{"kod":"error","message":"Пустой запрос"}

То есть все таки User-Agent…

/**
 * set User Agent
 * @param userAgent const char *
 */
void HTTPClient::setUserAgent(const String& userAgent)
{
    _userAgent = userAgent;
}

а вот это тогда почему не спасало?

http.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/109.0");

Наверное потому что два хидера посылалось:

    if (_userAgent.length()) {
        header += F("\r\nUser-Agent: ");
        header += _userAgent;
    }

Туплю, не понимаю, как правильно тогда будет указать User-Agent…?

Типа такого, наверное:

    http.setUserAgent(F("Mozilla/5.0"));
1 лайк

Спасибо, но завтра только уже проверю…

На beget.ru бесплатный хостинг на 30 дней или я где-то недоковырял?

PS. Нашёл условия тарифа “Бесплатный” ))

4 года как зарегистрировался, все бесплатно.
Может поменялось что

Леночка, яица подействовали… )))

[HTTP] POST... code: 200
received payload:
<<
{"kod":"error","message":"Пустой запрос"}
>>

1 лайк

Актуальная ссылка на соглашение при регистрации, там не там читал?
https://beget.com/ru/rulesfree
Про 30 дней не нашёл.
А это ссылка на регистрацию
https://beget.com/ru/hosting/free