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();
Примеры
#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 '/**/' 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 5.6.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;
}
/** 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;
}