wp_is_jsonp_request()
Проверяет, является ли текущий запрос запросом 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();
Примеры
#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 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; }