php - WordPress WP REST API 按域限制请求

标签 php ajax wordpress rest wp-api

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

最佳答案

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

}

关于php - WordPress WP REST API 按域限制请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43923877/

相关文章:

php - 使用 YIi2 更改注释时更改 PGSQL 的列架构不起作用

jquery - afterAjaxUpdate 回调函数 CListView 显示未定义

php - 在 WordPress 中使用 wp_oembed_get 为 youtube iframe 设置一个 id

php - 查询自定义 WordPress/buddyPress 表 (PHP/MySQL)

php - Wordpress - 使用元数据获取邮政编码并输出谷歌地图

javascript - 如何使用 node.js 自动更新 mailchimp 模板

PHP - 数据的插入查询未到达数据库,但没有显示错误消息;似乎代码根本没有被读取/执行

javascript - 用 Ajax 响应替换 DOM 节点

php - 将 geoip 安装为 PHP 模块与安装为 apache2 模块之间的区别

javascript - 多个 AJAX 请求来填充表单字段?