You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress集成Ninja表单提交时出现Mixed Content Exception错误求助

解决WordPress Ninja表单提交时的Mixed Content(混合内容)错误

这个问题我之前帮客户排查过好几次,本质就是你的站点已经全站HTTPS了,但Ninja表单还是在调用HTTP的AJAX接口,浏览器出于安全策略直接拦截了请求。下面几个方法按顺序试,基本都能搞定:

  • 检查WordPress核心URL设置
    先登录WordPress后台,到「设置→常规」页面,确认「WordPress地址(URL)」和「站点地址(URL)」这两个选项都是以https://开头的,绝对不能是http://。如果之前是HTTP,修改后记得点击保存,然后立刻清除站点缓存。
    要是后台修改后还是没生效,直接去数据库的wp_options表(如果你的表前缀不是wp_就对应修改),查siteurl和home这两个字段的值,确保它们也是HTTPS开头的。

  • 强制全站HTTPS跳转
    给服务器加个强制跳转规则,让所有HTTP请求自动转成HTTPS,从根源上避免混合内容问题:

    • 如果你用的是Apache服务器,在站点根目录的.htaccess文件里(放在WordPress默认的Rewrite规则之前)添加这段代码:
      RewriteEngine On
      RewriteCond %{HTTPS} !=on
      RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
      
    • 要是Nginx服务器,就在站点的server配置块里加:
      if ($scheme != "https") {
          return 301 https://$host$request_uri;
      }
      
  • 修复Ninja表单的AJAX端点URL
    有时候是Ninja表单自身没有正确识别站点的HTTPS状态,导致AJAX URL用了HTTP:

    1. 先把Ninja表单插件更新到最新版本,官方大概率已经修复了这类HTTPS兼容的小问题;
    2. 如果更新没用,就给主题的functions.php文件加一段代码,强制把Ninja表单的AJAX URL换成HTTPS:
      add_filter( 'ninja_forms_ajax_url', 'nf_force_https_ajax_url' );
      function nf_force_https_ajax_url( $url ) {
          return str_replace( 'http://', 'https://', $url );
      }
      
    3. 还可以用数据库替换工具(比如Search Replace DB,注意只在本地或测试环境用,生产环境一定要先备份数据库!),全站搜索http://my.domain替换成https://my.domain,彻底清理旧的HTTP路径。
  • 清空所有缓存
    最后一步很关键:不管是WordPress插件的缓存(比如WP Rocket、W3 Total Cache)、CDN缓存(比如Cloudflare)还是浏览器缓存,全部清一遍。很多时候缓存里还存着旧的HTTP资源路径,导致问题一直卡着。

要是按上面的步骤试完还没解决,就检查下有没有其他插件在修改AJAX URL,或者服务器的SSL配置有没有问题(比如证书是否生效,有没有反向代理导致站点识别成HTTP)。

内容的提问来源于stack exchange,提问作者TheShark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:36:12