【发布时间】:2021-11-28 12:16:23
【问题描述】:
今天我在 WordPress 中遇到了一个问题。当我尝试在 WordPress 管理部分创建一个新页面并上传新图像时,我试图找出解决方案,但我没有得到它......所以在打磨一个小时后我得到了一个解决方案......
错误
“发布失败。错误消息:响应不是有效的 JSON 响应。”
【问题讨论】:
-
你说的“打磨一个小时后”是什么意思?
标签: wordpress
今天我在 WordPress 中遇到了一个问题。当我尝试在 WordPress 管理部分创建一个新页面并上传新图像时,我试图找出解决方案,但我没有得到它......所以在打磨一个小时后我得到了一个解决方案......
“发布失败。错误消息:响应不是有效的 JSON 响应。”
【问题讨论】:
标签: wordpress
转到设置>永久链接。选择“帖子名称”并保存。
尝试更新您的帖子/页面。如果它不起作用,请尝试在设置>永久链接中选择另一个选项。
【讨论】:
现在,您可以使用 Classic Editor 插件来解决此问题。
错误的答案是我不知道的编辑器,但是有一个新的编辑器问题。如果您遇到同样的问题,请使用以下插件。为了解决这些问题,我正在研究这个问题。如果我得到一个退出解决方案,那么我会尽快更新...
【讨论】:
.htaccess 配置问题和/或mod_rewrite 配置问题。
.htaccess 的权限,所以也许这与它有关,但我不确定。使用经典编辑器是唯一适合我的方法。
如前所述更改永久链接设置为我解决了这个问题。如果您将“帖子名称”保留为永久链接设置,则 .htaccess 文件需要可由 wordpress 写入。
或者,可以将以下内容粘贴到 .htaccess 文件的底部。 Mod_rewrite 更改首先从文件底部执行。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
【讨论】:
我在本地开发环境中遇到了同样的问题,发现问题是由于重写权限造成的。确保您的 .htaccess 文件具有适当的权限。
sudo chmod 755 .htaccess
设置权限后,保存您的永久链接设置。如果问题仍然存在,请确保 mod_rewrite 已启用。以下内容适用于 Ubuntu 上的 apache2。
sudo a2enmod rewrite
sudo systemctl apache2 restart
如果仍然无法正常工作,您的 apache 配置可能过于严格。以下应该可以在 Ubuntu 上为 apache2 解决问题。编辑 /etc/apache2/apache2.conf 并查找根目录块。它通常是带有 /var/www 的那个,如下所示。您可能会看到 AllowOverride None。只需为您的本地将其更改为如下所示的所有,但您可能希望进行一些研究并在生产服务器上更安全。
<Directory /var/www/>Options Indexes FollowSymLinksAllowOverride AllRequire all granted</Directory>
更改完成后,在 apache 上再次重新启动,一切都会好起来的。
sudo systemctl apache2 restart
【讨论】:
您的安全问题可能是混合内容(HTTP 和 https 网址)。 步骤1 1. 1. 检查您的 Wordpress URL。转到设置-> 永久链接,然后单击纯文本并保存页面。然后删除错误
第二步
这解决了我的问题
【讨论】:
我刚刚安装了经典的编辑器插件,它解决了“响应不是有效的 JSON 响应”的问题。
【讨论】:
在尝试发布我的内容时,我遇到了同样的“不是有效的 JSON 响应”错误。 WordPress 在发布新帖子/页面时似乎会发布 JSON 帖子,因此我检查了开发人员工具中的网络选项卡。如果您检查此 JSON 调用的“响应”选项卡,您可能会看到有关此无效 JSON 响应的更多详细信息。
在我的情况下(您的情况可能不同),在实际 JSON 数据之前输出了一些已弃用的调试消息并弄乱了响应。修复已弃用的消息发布后再次工作。
<br />
<b>Deprecated</b>: Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version. To avoid this warning set 'always_populate_raw_post_data' to '-1' in php.ini and use the php://input stream instead. in <b>Unknown</b> on line <b>0</b><br />
<br />
<b>Warning</b>: Cannot modify header information - headers already sent in <b>Unknown</b> on line <b>0</b><br />
{__NORMAL_JSON_DATA_HERE__}
【讨论】:
就我而言,这是一个防火墙问题。为网站触发了 ModSecurity 防火墙规则。我联系了托管服务提供商 (NameCheap),他们发现了问题,然后将服务器上触发的规则列入了白名单。然后问题就解决了。
【讨论】:
看起来这个问题还没有解决。
一种对我有用的解决方法(发布以防它也适用于其他人) - 在我的情况下,我使用的是导致问题的 HTML 块。我所做的是添加一个段落块 > 编辑为 HTML。它暂时解决了这个问题。很遗憾 WP 还没有调查它,似乎它已经发生了一段时间。
【讨论】:
我遇到了同样的错误,在我的案例中,原因是页面中使用了简码,而定义简码的函数使用“echo”来输出数据,而不是使用“return”
【讨论】:
在添加和/或更新页面时,除了各种其他随机错误之外,我也收到了相同的错误消息。我在本地开发服务器和虚拟主机上都遇到了错误。当更改为默认主题之一(例如二十九)时,错误将消失。对我来说,问题出在我的页面模板文件中。我注意到在为新创建的页面选择模板时,我会有多个名称相同的选择。
我有几个页面模板文件(例如 about-page.php、contact-page.php、services-page.php 等)。在创建这些文件时,由于这些页面中的大多数都是相似的,我只需从现有文件中复制/粘贴以创建一个新的 xxxx-page.php 文件。但是,在其中一些复制的文件(不是全部)中,我忘记修改“模板名称”(在文件顶部)。
在我检查并确保我的所有模板文件都有唯一的名称后,JSON 错误就消失了。我所有的其他错误也消失了。我正在使用 Wordpress 5.4。
【讨论】:
我的问题与 .htaccess 相关。我从 LucasBr 关于“.htaccess 配置问题”的评论中得到了提示。由于我已将该站点复制到我的本地开发环境中。我需要更新自定义 mod_rewrite 设置以匹配我的设置。
重要的几行是:
RewriteBase /
和
RewriteRule . /index.php [L]
他们之前被设置为访问子目录站点。
【讨论】:
我的一些自定义插件中有一些回声,所以这也是导致此问题的原因。
【讨论】:
我遇到了持续存在的问题。在找到解决方案之前,我更换了 PHP 8,因为这是自定义 PHP 安装。
但没有任何效果。
解决方案是在 Drupal 安装过程中找到的。
httpd.ini 文件中,Mod Rewrite 出现了 3 次,他们被改成None 到All 再次none all 这是小写字母,最后一个None 到All
使用httpd -k restart(CMD 作为管理员)重新启动 httpd
这已解决。
【讨论】:
由于不同的原因,我与一位客户遇到了同样的问题,但从未将其视为潜在的解决方案。
如果您启用了 W.A.F(如 cloudflare 或类似的),副作用之一可能是此错误,因此如果其他解决方案都不起作用,请务必禁用以禁用您的 waf。
【讨论】:
如果您在 Wordpress 中使用 mod security 3,您可能会收到以下消息:
发布失败。该响应不是有效的 JSON 响应。
要删除它,您需要将此规则添加到名为
的排除文件中REQUEST-900-EXCLUSION-RULES-BEFORE-CRS
如下:
# Remove Publishing failed. The response is not a valid JSON response.
SecRule REQUEST_HEADERS:Host "example.com" \
"id:1025,\
phase:2,\
pass,\
nolog,\
chain"
SecRule REQUEST_URI "@beginsWith /wp-json/wp/v2" \
" ctl:ruleRemoveById=933210,ctl:ruleRemoveById=949110"
您可能需要更改规则 ID 并将 example.com 更改为您的域名。之后,执行以下操作:
sudo nginx -t
如果没有检测到问题,重启nginx:
sudo service nginx restart
sudo systemctl restart nginx
【讨论】:
这是一个永久链接错误。
执行以下步骤来修复它(取决于您的场景中的原因),如下所述:https://wordpress786.com/updating-failed-error-message-the-response-is-not-a-valid-json-response/:
settings > permalinks 并再次保存它们【讨论】:
如果您在上传图片时遇到问题,请按此操作:https://navinrao.com/the-response-is-not-a-valid-json-response/
我在更新普通文本时也遇到了这个问题。 我面临的问题是由于我的链接 () 中有 javascript:void(0) 关键字。
请确定您的内容是否包含包含 javascript 的关键字 更新前。
<a href="javascript:void(0)" target="_blank" title="Linkedin" class="social-color-3"><i class="fa fa-linkedin" aria-hidden="true"></i></a>
在我删除 javascript:void(0) 后;它工作正常。 玩得开心:)
【讨论】:
尝试删除所有指向 WordPress 网站的重定向,包括子域。
【讨论】: