在个别WordPress外贸建站客户搭建网站时,会遇到“网站设置”中保存数据时,出现弹窗错误“There was a problem with your action. Please try again or reload the page.”的提示。这个问题的主要存在独立服务器搭建的网站中,导致的该问题的原因是服务器端的权限限制,使得 WordPress 的 Ajax无刷新数据保存功能失效。
以宝塔面板为例,如果在宝塔面板中安装了防火墙应用,就可能导致该问题的出现。
我们在排查客户的问题页面时,在浏览器的开发者工具的控制台中发现了以下错误提示:
提示内容如下:
宝塔网站防火墙免费版
您的请求带有不合法参数,已被网站管理员设置拦截!
可能原因:
1. 数据保存被防火墙拦截
2. 您提交的内容包含危险的攻击请求
如何解决:
1. 检查提交内容;
2. 如网站托管,请联系空间提供商;
3. 普通网站访客,请联系网站管理员;
4. 这是误报,请联系宝塔
由此可以看出是WordPress的无刷新Ajax数据提交保存操作被服务器中的防火墙拦截了,我们需要关闭相关防火墙拦截设置才行。
还是以宝塔面板为例,登录宝塔面板管理。
1. 找到【 软件商店 】,切换到【 已安装 】,找到里面已经安装的防火墙软件,如下图所示:
2. 点击打开该防火墙软件设置,尝试逐一取消里面的 防CC攻击、URL过滤、POST过滤等设置,检查上面的问题是否得到解决。
例如,在WPPOP模板的“网站设置”中出现的错误原因是Post方式提交时 /wp-admin/admin-ajax.php 文件出现的 403 错误,所以,我们优先取消POST过滤设置来解决问题。
如果只是针对特定网站修改过滤设置,还可以在其中的 站点设置 中尝试逐一取消相关过滤选项来解决。如下图所示:
- 继承: 全局设置将在站点配置中自动继承为默认值
- 优先级: UA白名单> UA黑名单> URL关键词拦截> IP白名单 > IP黑名单 > URL白名单 > URL黑名单 > CC防御 > 禁止国外IP访问 > User-Agent > URI过滤 > URL参数 > Cookie > POST
至此,网站设置保存数据出现“There was a problem with your action. Please try again or reload the page.”提示的问题就能解决了。
如果网站其他地方出现了类似保存数据无效的情况,也可以参考以上解决方法。
此外,如果你的网站服务器安装了“云锁”之类的安全扩展服务,也可能会遇到提示非合法参数的情况,这就需要先卸载或关掉对应的安装扩展软件才行。