WordPress WP REST API ограничивает запросы по домену

Это кажется более очевидным. Я использую WordPress для управления контентом внешнего сайта. Содержимое WordPress отображается через WP REST API, и я отображаю содержимое с помощью ajax и JS на этом удаленном сайте. (например, https://example.com//wp-json/wp/v2/pages/23). Все на SSL и все отлично работает. Как я могу просто сделать так, чтобы этот запрос ajax GET разрешался только с определенного домена - удаленного сайта? API WP используется только для отображения данных.


person pelicanpaul    schedule 11.05.2017    source источник


Ответы (1)


Я только что посмотрел на переменные сервера php и понял это. $_SERVER['HTTP_ORIGIN']; был тот, который я хватаю. Работает как шарм!

add_filter( 'rest_authentication_errors', 'gc_filter_incoming_connections' );

function gc_filter_incoming_connections( $errors ){

    $allowed_origins = array('https://www.example.com'); // url that you want to access your WP REST API
    $request_origin = $_SERVER['HTTP_ORIGIN'];

    if( ! in_array( $request_origin, $allowed_origins ) )
        return new WP_Error( 'forbidden_access', 'Access denied', array( 'status' => 403 ) );

    return $errors;

}
person pelicanpaul    schedule 11.05.2017
comment
HTTP_ORIGIN не является безопасным и не отправляется каждым браузером. Я рекомендую против его использования. - person Ahmad Awais; 03.08.2018