Chrome控制台出现大量wp-json REST API 403错误,文章无法更新,服务器超负载

今早起床例行更新文章,点击更新后就没反应了,一直提示正在更新。估计服务器又超负荷了,最近因为更换主题一直遇到这个问题,不知道是哪里设置有问题,还是服务器需要升级了。

于是查看了一下服务器状态,果然 cpu 使用率接近 100% 了,内存使用率也上升了不少,负载状态也接近 100% 。

小心翼翼的查看了一下服务器各种服务进程的状态,没发现什么异常。

忽然灵光一闪,不如打开 Chrome 控制台看看,终于发现问题所在,原来不断有 403 错误发生,一直刷不带停的。

Chrome控制台出现大量wp-json REST API 403错误,文章无法更新,服务器超负载

又是这个 wp-json 在作怪,记得以前好像也遇到过,但是解决办法忘记了。

马上 Google 大法找原因,我知道这个 REST API 功能,以前就研究过,主要作用是让 App 调用的接口。REST API 可以让 WordPress 不仅仅存在于 Web 端,而是可以让它成为后台终端。

很多人都建议把它禁止掉,在当前主题 functions.php 文件中添加下面的代码就行。

//禁用 REST API、移除 wp-json
add_filter('rest_enabled', '_return_false');
add_filter('rest_jsonp_enabled', '_return_false');
remove_action( 'wp_head', 'rest_output_link_wp_head', 10 );
remove_action( 'wp_head', 'wp_oembed_add_discovery_links', 10 );

由于先入为主,我也跟从前面的方向去找问题,结果 Google 找了一圈都没能解决问题。

但是没办法啊,也只能求助于 Google,而且也只能用英文搜索,从国外的网站去找,国内估计是难找了。

终于功夫不负有心人,一不小心看到了一个搜索结果,看到一行字:log out and log back in。

看到这几个字我就记起来了,是浏览器 Cookies 引起的问题。因为之前在测试一些功能,把 Cookies 清理了,但是 WordPress 后台居然没有退出,后面就没管了,没想到因为它引发了血案。

之后就简单了,退出 WordPress 后台,然后重新登录,问题解决了。于是写下这篇文章,以作记录。