将WordPress Rest API请求限制为我的域

时间:2019-02-13 01:13:21

标签: wordpress wordpress-rest-api

我有一个WordPress网站,该网站仅用于填充自定义帖子类型下的博客帖子和一些私人帖子。在另一个网站上,我正在使用REST API来显示帖子。如果使用Postman之类的软件,则可以显示REST API中的数据。

如何防止对域www.example.com的任何未经授权的REST API请求?因此,如果请求不是来自www.mysite.com,则被阻止了吗?

如果不是来自mysite.com的其余api,则基本上阻止我的自定义帖子类型(example.com)可见

3 个答案:

答案 0 :(得分:2)

您可以通过在wp-config.php中添加外部请求来禁用外部请求(此外,您可以指定不想阻止的域,这样)。

 define( 'WP_HTTP_BLOCK_EXTERNAL', TRUE );
 define( 'WP_ACCESSIBLE_HOSTS', 'example.com, domain.com' );

答案 1 :(得分:2)

<input type = "text" [(ngModel)] = "writerSuggest" (ngModelChange) = "getWriterList($event)" />

过滤REST身份验证错误。将代码放入主题目录中的functions.php中。

完整描述:https://developer.wordpress.org/reference/hooks/rest_authentication_errors/

apply_filters( 'rest_authentication_errors', WP_Error|null|bool )

答案 2 :(得分:0)

限制REST请求的一种方法是使用优先级1挂在rest_api_init上,并将所需的IP列入白名单。在此示例中,我仅将REST访问限制为服务器本身:

/**
*    Disables WordPress Rest API for external requests
*/
add_action('rest_api_init', function() {
    $whitelist = ['127.0.0.1', "::1"];

    if(!in_array($_SERVER['REMOTE_ADDR'], $whitelist)){
        die('REST API is disabled.');
    }
}, 1);