wp_is_jsonp_request()WP 5.2.0

Проверяет, является ли текущий запрос запросом JSONP или ожидает ответа JSONP.

Проверяет наличие GET параметра _jsonp - $_GET['_jsonp']. Значение этого параметра прогоняется через функцию wp_check_jsonp_callback() и, если проверка пройдена, функция вернет true.

Работает на основе: wp_check_jsonp_callback()
1 раз — 0.000001 сек (скорость света) | 50000 раз — 0.01 сек (скорость света) | PHP 7.3.3, WP 5.2.3
Хуки из функции

Возвращает

true|false.

  • true — когда запрос ожидает JSONP ответ ($_GET['_jsonp'] содержит имя колбэка и оно валидно).
  • false — в остальных случаях.

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

wp_is_jsonp_request();

Примеры

0

#1 Вернем 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'];

	// Prepend '/**/' to mitigate possible JSONP Flash attacks.
	// https://miki.it/blog/2014/7/8/abusing-jsonp-with-rosetta-flash/
	echo '/**/' . $jsonp_callback . '(' . wp_json_encode( $data ) . ')';
}

Список изменений

С версии 5.2.0 Введена.

Код wp_is_jsonp_request() WP 6.7.1

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;
	}

	/** This filter is documented in wp-includes/rest-api/class-wp-rest-server.php */
	$jsonp_enabled = apply_filters( 'rest_jsonp_enabled', true );

	return $jsonp_enabled;
}