WordPress WP REST API按域限制请求

pel*_*aul 2 php ajax rest wordpress wp-api

这似乎更明显.我使用WordPress来管理外部网站的内容.WordPress内容通过WP REST API显示,我将带有ajax和JS的内容显示到此远程站点.(例如https://example.com//wp-json/wp/v2/pages/23).一切都在SSL上,一切都很好.我怎样才能简单地做到这一点,这个ajax GET请求只允许来自某个域 - 远程站点?WP API仅用于显示数据.

pel*_*aul 5

我刚看了一下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;

}
Run Code Online (Sandbox Code Playgroud)