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

QT应用GET请求正常但POST请求失效(Hostinger迁移后)

问题:QT POST请求无法在Hostinger主机上获取$_POST参数

现象

GET请求正常工作

PHP代码:

<?php
include_once("_config.php");

$api = $_GET['api'];

echo $api;
?>

QT调用代码:

QUrl url(path + "/_getcl.php?api=testing");
QNetworkRequest request(url);

request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");

networkManager->get(request, params.query().toUtf8());

POST请求无法获取$_POST['api']值

PHP代码:

<?php
include_once("_config.php");

$api = $_POST['api'];

echo $api;
?>

QT调用代码:

QUrl url(path + "/_getcl.php");
QNetworkRequest request(url);

request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");

QUrlQuery params;
params.addQueryItem("api", "testing");
networkClients->post(request, params.query().toUtf8());

注:上述代码在旧主机服务上可正常运行,迁移至Hostinger新主机后出现POST参数无法获取的问题

解决办法

  1. 检查Hostinger的PHP配置
    Hostinger默认配置可能存在参数限制,导致POST数据无法解析。可创建phpinfo.php文件查看关键配置:

    <?php phpinfo(); ?>
    

    重点核对:

    • post_max_size与upload_max_filesize:确保值大于你发送的POST数据大小
    • request_order或variables_order:确认包含P(代表POST参数),例如GPCS
  2. 直接读取原始POST数据
    部分主机配置会禁用$_POST自动解析,可改用php://input获取原始数据并手动解析:

    <?php
    include_once("_config.php");
    parse_str(file_get_contents("php://input"), $postData);
    $api = $postData['api'] ?? '';
    echo $api;
    ?>
    
  3. 完善QT请求的头部设置
    显式添加Content-Length头部,确保请求参数被正确识别:

    QByteArray postData = params.query().toUtf8();
    request.setHeader(QNetworkRequest::ContentLengthHeader, postData.size());
    networkClients->post(request, postData);
    
  4. 排查.htaccess规则干扰
    迁移后的.htaccess文件可能存在URL重写规则,导致POST参数丢失。可暂时重命名.htaccess文件测试是否恢复正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 16:24:45