wp_safe_remote_request()

19 февраля, 2025
Безопасный HTTP-запрос в WordPress с помощью функции wp_safe_remote_request(): параметры, примеры, безопасность
Быстрая навигация по записи

Описание функции wp_safe_remote_request()

Функция wp_safe_remote_request() выполняет безопасный HTTP-запрос (GET, POST и др.) к удаленному серверу. Она используется для получения данных с внешних источников, обеспечивая защиту от возможных уязвимостей, таких как атаки типа CSRF или XSS. Функция проверяет URL на соответствие определенным критериям безопасности, прежде чем выполнять запрос

Параметры

$url

Тип: string

Обязательный: Да

Описание: URL-адрес, к которому будет выполнен запрос

Возможные значения:

$args

Тип: array

Обязательный: Нет

По умолчанию: array()

Описание: Массив дополнительных параметров для запроса

Возможные значения:

method: GET, POST, PUT, DELETE

body: Данные для отправки при POST/PUT запросах

timeout: Время ожидания в секундах

headers: Массив заголовков для запроса

Возвращаемое значение

Тип: array|WP_Error

Описание: Массив с результатами запроса или объект WP_Error в случае ошибки

Возможные значения:

• Массив с данными ответа и статусом

• Объект WP_Error в случае неудачи

Примеры использования

Простой запрос к API с обработкой ошибок

				
					$response = wp_safe_remote_request('https://example.com/api/data');
if (is_wp_error($response)) {
    echo 'Ошибка: ' . $response->get_error_message();
} else {
    echo 'Ответ: ' . wp_remote_retrieve_body($response);
}
				
			

Выводит либо ошибку, либо тело ответа

Отправка POST-запроса с данными

				
					$args = array(
    'method' => 'POST',
    'body' => array('key' => 'value'),
    'timeout' => 15
);
$response = wp_safe_remote_request('https://example.com/api/data', $args);
				
			

Увеличивает время ожидания до 15 секунд

Логирование ошибок запроса

				
					$response = wp_safe_remote_request('https://example.com/api/data');
if (is_wp_error($response)) {
    error_log($response->get_error_message());
} else {
    // Обработка успешного ответа
}
				
			

Ошибки записываются в лог

Функция для получения данных в плагине

				
					function my_plugin_fetch_data() {
    $response = wp_safe_remote_request('https://example.com/api/data');
    if (is_wp_error($response)) {
        return 'Ошибка при получении данных';
    }
    return wp_remote_retrieve_body($response);
}
				
			

Возвращает данные или сообщение об ошибке

Безопасность

Валидация входных данных: URL проходит через sanitize_url() для валидации

Санитизация: Аргументы автоматически очищаются WordPress

Рекомендации: Не используйте пользовательские URL без проверки на безопасность

— Связанные функции

Выполняет GET-запрос без дополнительных проверок безопасности

Выполняет POST-запрос без дополнительных проверок безопасности

— Хуки

Фильтрует аргументы перед выполнением запроса

Фильтрует ответ после выполнения запроса

— Примечания

– Ограничения

Может не поддерживать некоторые типы запросов (например, WebSocket)

– Частые проблемы

  • Проблемы с CORS при запросах к сторонним API
  • Ошибка при недоступности удаленного сервера

Оставить комментарий

Нужна помощь с WordPress WooCommerce плагинами темой оптимизацией ?

Упрощаем сложное, создаем впечатляющее!
100% без риска
Нет обязательств по найму
Бесплатная оценка
5900 ₽
Автомобильный каталог
Шаблон авто сайта на русском языке, преображающий онлайн-сервисы для автодилеров и профессионалов автобизнеса. Стильный и интуитивно понятный дизайн обеспечивает быстрый поиск автомобиля мечты

Поможем вывести Ваш бизнес на новый уровень!

Проснувшись однажды утром после беспокойного сна, Грегор Замза обнаружил

Добро пожаловать!

Авторизуйтесь, чтобы продолжить

или

Забыли пароль? Восстановить

* Если аккунта у Вас еще нет, то он будет создан автоматически

Давайте составим техническое задание!
100% без риска
Нет обязательств по найму
Бесплатная оценка стоимости
Здравствуйте! Я асистент на основе искусственного интеллекта. Вы можете общаться со мной, как с человеком — задавайте вопросы, описывайте свои идеи и требования.

С удовольствием помогу вам составить техническое задание для вашего WordPress проекта. Если Вам нужна техническая поддержка по купленному у нас плагину или шаблону, то создайте тикет в личном кабинете.

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