类别: 程序技术

wordpress有的文章发布失败。此响应不是合法的JSON响应 – 查看是否被放火墙waf拦截

使用wordpress发布文章时遇到有的文章发布不了,有的文章就能发布。这时就要看看是不是被放火墙waf拦截了。我是由于最近开通了阿里云的web应用放火墙3.0,导致提交的数据中触发了阿里云waf的拦截规则,进而导致发布文章报错。

wordpress发布失败。此响应不是合法的JSON响应

打开阿里云web应用放火墙放火墙,查看拦截详情,部分关键信息如下

规则ID        113120
规则名称      ASP命令执行
规则描述      此规则阻止尝试执行ASP类远程命令,这些命令通常由网站恶意后门使用。 
        会检测如下命令: - eval、execute、unencode、request、server.createobject等
        检测在以下选择器上运行: - HTTP request URI的参数值
攻击类型      代码执行
URL           www.bluepost.cn/wp-json/wp/v2/posts/806?_locale=user
Post value    postarg.content=<! <pre class="wp-block-code"><code> 
        echo -e "\nINFO: 生成 Let's Encrypt 证书"  
        #read -p "INFO: 是否签发证书 &#if [ "${yn}" == "y" ] || &  echo "I

解决方法

删除这些被拦截的代码再次发布成功,确定是放火墙的问题。

在放火墙中将此类拦截提交为误报。或者将发布者的IP地址加入白名单。

遇到该错误的其他原因 – 所有文章发布都报错

wordpress发布文章报错:发布失败。此响应不是合法的JSON响应。 也有可能是以下几种情况导致的。但对于我来说只有部分文章无法发布,就不会是下属情况。

第一种情况:Wordpress编辑器插件或其它插件的问题

很多都是“新版古腾堡编辑器”的问题,如果真是这个问题,解决方法如下:
直接在模版文件的 fuctions.php 的600多行的样子直接添加代码

//禁用 Gutenberg 编辑器
add_filter('use_block_editor_for_post', '__return_false');
remove_action( 'wp_enqueue_scripts', 'wp_common_block_scripts_and_styles' );

第二种情况:Wordpress WP Rest API的问题

如果你在发表文章的时候通过浏览器的F12功能来审查资源,你会发现WP REST API会报错,这个时候可以尝试禁用WP REST API来测试是否正常工作。可以使用插件WP REST API禁用

第三种情况:系统镜像的问题

也有可能是系统镜像里面某个组件和新版本的WordPress不兼容导致的,如果是这样的话,就需要直接换个镜像解决的更快一点。

第四种情况:伪静态的问题

使用伪静态时,需要将“固定链接”改为“朴素”,这样伪静态才有用。

转载请注明:半亩方塘 » wordpress有的文章发布失败。此响应不是合法的JSON响应 – 查看是否被放火墙waf拦截