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_json_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 '/**/' до 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.0.2

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

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

	return $jsonp_enabled;

}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *