WordPress4.7以上版本如何禁用JSON REST API?

酸甜苦辣是生命的富有,赤橙黄绿是人生的斑斓。低头走路只看到大地的厚重却忽略了高空的高远;抬头走路,只看到高空的广阔,却忽略了脚下的艰辛与险峻。

WordPress 4.7 以上的版本建议使用 rest_enabled 并不能完全禁用 REST API,而是应该换用 rest_authentication_errors 过滤器来限制访问。在 wp-json 页面有如下提示:

自 4.7.0 版本起,已不建议使用 rest_enabled,请换用 rest_authentication_errors。 REST API 不再能被完全禁用,不过您可以用“rest_authentication_errors”过滤器来限制对该 API 的访问。

所以想要在 WordPress 4.7 以上版本完全禁用 wp-json 功能(JSON REST API),只需要将以下代码添加到当前主题的 functions.php 文件中即可:

  1. //完全禁用 wp-json
  2. functiondisable_rest_api($access){
  3. returnnewWP_Error('无访问权限','Soooooryyyy',array(
  4. 'status'=>403
  5. ));
  6. }
  7. add_filter('rest_authentication_errors','disable_rest_api');
  8. //移除 wp-json 链接
  9. remove_action('wp_head','rest_output_link_wp_head',10);

内容整理自:智慧宫 - https://www.hanost.com/843.html

方法二:借助 Nginx 控制 /wp-json 的访问

这个倒与 WordPress 本身无关了,your-site.com/wp-json,默认是所有人皆可访问。如果你基于服务器负载,或安全等方面考虑选择性输出,可以借助 Nginx 控制访问。先看下面的例子:

  1. #https://devework.com/wordpress-rest-api-dynamic-output.html
  2. location/wp-json{
  3. if($http_user_agent!~'(iPhone|Android)'){
  4. return403;
  5. }
  6. try_files$uri$uri//index.php?$args;
  7. }

如果你熟悉 Nginx 语法,就知道上面的代码实现了:除了 iOS 跟 Android 设备(通过判断请求头的 UA 信息),其它访问 /wp-json 的路径均返回 403 状态码。这在一定程度上起到了保护作用。

内容整理自:DeveWork - https://devework.com/wordpress-rest-api-dynamic-output.html

以上就是WordPress4.7以上版本如何禁用JSON REST API?。人生来如风雨,去如微尘。更多关于WordPress4.7以上版本如何禁用JSON REST API?请关注haodaima.com其它相关文章!

标签: JSON API