WP_IS_JSONP_REQUEST(): проверка запроса на JSONP в WordPress

WP_IS_JSONP_REQUEST() │ WP 5.2.0

Функция WP_IS_JSONP_REQUEST() проверяет, является ли текущий запрос запросом JSONP или ожидается ли ответ в формате JSONP.

Использует: wp_check_jsonp_callback().

Время выполнения:

  • 1 раз — 0.000001 сек (скорость света)
  • 50000 раз — 0.01 сек (скорость света)

Поддерживаемые версии: PHP 7.3.3, WP 5.2.3


Хуки функции

  • rest_jsonp_enabled

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

Функция возвращает true или false. Она возвращает true, если запрос JSONP, и false в противном случае.


Использование

Вызов функции выглядит так:

wp_is_jsonp_request();

Примеры

Пример кода для возврата JSONP данных, если это запрос JSONP:

$data = [ 'foo' => 'bar' ];

if ( wp_is_jsonp_request() ) {
    header( 'Content-Type: application/javascript; charset=utf-8' );
    header( 'X-Content-Type-Options: nosniff' );
    header( 'X-Robots-Tag: noindex' );
    nocache_headers();

    $jsonp_callback = $_GET['_jsonp'];

    // Добавление '/**/' для снижения риска JSONP Flash атак.
    // https://miki.it/blog/2014/7/8/abusing-jsonp-with-rosetta-flash/
    echo '/**/' . $jsonp_callback . '(' . wp_json_encode( $data ) . ')';
}

Изменения

С версии 5.2.0 функция была введена в WordPress.


Код функции WP_IS_JSONP_REQUEST()

Вот, как выглядит код функции:

function wp_is_jsonp_request() {
    if ( ! isset( $_GET['_jsonp'] ) ) {
        return false;
    }

    if ( ! function_exists( 'wp_check_jsonp_callback' ) ) {
        require_once ABSPATH . WPINC . '/functions.php';
    }

    $jsonp_callback = $_GET['_jsonp'];
    if ( ! wp_check_jsonp_callback( $jsonp_callback ) ) {
        return false;
    }

    /** Этот фильтр задокументирован в wp-includes/rest-api/class-wp-rest-server.php */
    $jsonp_enabled = apply_filters( 'rest_jsonp_enabled', true );

    return $jsonp_enabled;
}

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

  • Запрос (Query): wp_is_json_request()

Вспомогательные функции

  • __return_empty_array()
  • __return_empty_string()
  • __return_false()
  • __return_null()
  • __return_true()
  • __return_zero()
  • array_key_first()
  • ...

(Приведены только некоторые функции для примера. Полный список можно увидеть в документации WordPress.)


Эта статья поможет вам понять, как использовать функцию wp_is_jsonp_request() и какие функции связаны с ней. Используйте примеры кода, чтобы протестировать работу функции на вашем сайте на WordPress.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *