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

使用WordPress标准REST API:无法从非HTTPS站点拉取数据求助

解决WordPress REST API无法拉取HTTP站点数据的问题

这大概率是浏览器的混合内容限制在搞鬼——现在主流浏览器默认会阻止HTTPS页面加载HTTP资源,哪怕你用的是WordPress原生REST API也逃不过这个规则。毕竟HTTPS是加密环境,混入未加密的HTTP资源会破坏页面安全链,浏览器出于安全考量直接就拦截了。

给你几个可行的解决方案,按优先级排序:

  • 最彻底的方案:把目标HTTP站点升级到HTTPS
    现在免费SSL证书(比如Let's Encrypt)随处可得,不管是主机面板一键配置还是手动部署都不算复杂。升级后不仅能解决API调用问题,还能提升站点SEO排名和用户信任度,一举多得。

  • 临时测试用:放宽浏览器的混合内容限制
    如果你只是想测试功能,不想折腾升级,可以临时让浏览器允许混合内容:

    • Chrome:点击地址栏的锁图标 → 选择「站点设置」→ 找到「不安全内容」选项,改成「允许」,刷新页面即可。
    • Firefox:点击地址栏的锁图标 → 选择「连接安全」→ 点击「禁用保护」,确认允许混合内容。
      注意:这只适合本地测试,绝对不能让生产环境的用户这么操作,既不安全又影响体验。
  • 检查自身WordPress的SSL配置
    虽然你说没做额外配置,但有时候主机商会自动开启HTTPS强制跳转,或者WordPress后台「设置→常规」里的「WordPress地址(URL)」和「站点地址(URL)」被设成了HTTPS。如果你的前端页面是HTTPS协议,调用HTTP接口自然会被浏览器拦截,这时候要么把目标接口换成HTTPS,要么用下面的代理方案。

  • 权宜之计:用代理中转请求
    如果目标站点暂时没法升级HTTPS,可以在自己的WordPress上写个简单的代理脚本,让代理去请求HTTP数据,你的前端再通过HTTPS调用这个代理。比如创建一个proxy.php文件放在站点根目录:

    <?php
    // 允许跨域请求(根据需要开启)
    header("Access-Control-Allow-Origin: *");
    
    // 获取目标URL并验证合法性
    $targetUrl = isset($_GET['url']) ? $_GET['url'] : '';
    if (filter_var($targetUrl, FILTER_VALIDATE_URL)) {
        // 发起请求并返回结果
        $response = file_get_contents($targetUrl);
        echo $response;
    } else {
        // 返回错误
        http_response_code(400);
        echo "Invalid or missing target URL";
    }
    ?>
    

    然后前端调用的时候改成:https://your-wordpress-site.com/proxy.php?url=http://target-http-site.com/your-api-endpoint,这样就绕开了浏览器的混合内容限制。记得要做好安全验证,防止恶意用户传入危险URL。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:31:02