wp_is_jsonp_request()
Перевіряє, чи запит запиту JSONP є поточним запитом, або чекає відповіді JSONP .
Перевіряє наявність параметра GET _jsonp
– $_GET[‘_jsonp’] . Значення цього параметра проганяється через функцію wp_check_jsonp_callback() і якщо перевірка пройдена, функція поверне true.
Працює на основі:
wp_check_jsonp_callback()
wp_check_jsonp_callback()
1 раз – 0.000001 сек
(швидкість світла) | 50000 разів – 0.01 сек
(швидкість світла) |
PHP 7.3.3, WP 5.2.3
(швидкість світла) | 50000 разів – 0.01 сек
(швидкість світла) |
PHP 7.3.3, WP 5.2.3
Хуки з функції
Повертає
true|false
.
true
— коли запит чекає на JSONP відповідь ($_GET['_jsonp']
містить ім’я колбека і воно валідно).false
– в інших випадках.
Використання
wp_is_jsonp_request();
Приклади
#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 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; }