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

WordPress中jQuery AJAX请求HTTPS自动转HTTP被拦截,求原因排查

排查WordPress中AJAX HTTPS URL被转为HTTP的常见原因

嘿,这个问题在WordPress里挺常见的,我帮你梳理几个最可能的原因和对应的解决办法:

  • 站点URL配置错误
    先去WordPress后台的「设置→常规」里看看WordPress地址(URL)和站点地址(URL),只要其中一个是HTTP开头,就可能让系统自动把AJAX请求转成HTTP。如果后台没法改(比如权限问题),直接在wp-config.php里加这几行代码强制HTTPS:

    define('WP_HOME','https://example.com');
    define('WP_SITEURL','https://example.com');
    define('FORCE_SSL_ADMIN', true); // 强制后台用HTTPS
    define('FORCE_SSL_LOGIN', true); // 强制登录用HTTPS
    
  • 硬编码URL不如用WordPress内置AJAX机制
    你直接写死了完整URL,其实WordPress有专门的AJAX处理接口,用admin_url('admin-ajax.php')生成的URL会自动适配站点的协议(HTTP/HTTPS)。步骤是这样的:

    1. 在PHP里把AJAX URL传给前端:
      wp_localize_script( '你的脚本句柄', 'ajax_data', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
      
    2. 前端jQuery里用这个变量:
      jQuery.ajax({
          url: ajax_data.ajax_url,
          dataType: 'json',
          method: 'POST',
          data: {...},
          complete: function(data) { /* 你的处理逻辑 */ }
      });
      

    这样就不会出现协议不匹配的问题了。

  • 服务器/CDN的重定向或缓存问题
    检查下服务器的SSL配置,比如Nginx或Apache有没有把HTTP请求301重定向到HTTPS。如果配置没问题,可能是CDN缓存了旧的HTTP规则,需要清空CDN缓存。举个Nginx的重定向配置例子:

    server {
        listen 80;
        server_name example.com;
        return 301 https://$server_name$request_uri;
    }
    
  • 插件或主题搞的鬼
    有些缓存插件、安全插件甚至主题,可能会有自动改写URL协议的功能,不小心把HTTPS改成了HTTP。你可以先暂时禁用所有插件,切换到默认主题(比如Twenty Twenty-Four),如果问题消失了,再逐个启用插件排查是哪个在搞事情。

  • 浏览器缓存或本地环境的HSTS
    如果你之前用HTTP访问过这个站点,浏览器可能缓存了旧的协议。试试清除浏览器缓存,或者在开发者工具里勾选「禁用缓存」后刷新页面(Ctrl+Shift+R强制刷新)。如果是本地开发环境,还要检查SSL证书是否配置正确,有没有开启HSTS导致的冲突。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 03:55:18