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

Unity发送POST请求到PHP服务端无法获取$_POST数据问题求助

可能原因及排查方案

  • 重定向导致参数丢失
    UnityWebRequest默认跟随301/302重定向时,会自动将POST请求转为GET请求,原本的POST参数会全部丢失。常见触发场景包括:请求地址写的是HTTP但服务器强制跳转HTTPS、域名带www跳转不带www(或反过来)、路径末尾缺/被服务器补全跳转。
    排查方法:在C#代码的成功分支输出www.responseCode,如果返回值为301/302,直接将请求地址改成跳转后的最终地址即可。

  • PHP配置导致POST解析失败
    检查php.ini中的以下配置项:

    • request_order 配置值需包含P,否则PHP不会填充$_POST数组
    • post_max_size 配置值小于你发送的内容大小,会导致POST数据被清空
    • variables_order 配置如果缺失P也会影响$_POST生成
      排查方法:在PHP脚本顶部添加phpinfo();查看上述配置实际值。
  • 输入流被提前读取导致$_POST为空
    PHP的php://input流是只读一次的,如果你的应用有前置中间件、公共引入文件提前调用了file_get_contents('php://input'),后续PHP就无法再解析流内容填充$_POST数组。
    排查方法:在savedata.php最顶部添加以下调试代码,查看原始请求内容是否存在:

    <?php
    var_dump(file_get_contents('php://input'));
    var_dump($_SERVER['CONTENT_TYPE']);
    var_dump($_SERVER['REQUEST_METHOD']);
    ?>
    

    如果原始输入有内容、但$_POST为空,基本可以确定是输入流被提前读取,或者请求Content-Type不是PHP支持的表单格式。

  • 请求头设置错误
    虽然WWWForm默认会自动设置Content-Type: application/x-www-form-urlencoded,但如果你后续手动调用www.SetRequestHeader覆盖了Content-Type为application/json等其他值,PHP无法将对应格式的内容解析到$_POST中。

  • WebGL平台跨域预检问题
    如果你的项目打包为WebGL版本,跨域请求时浏览器会先发送OPTIONS预检请求,若PHP侧没有正确处理OPTIONS请求直接返回,后续实际POST请求可能无法正常到达,或者你拿到的是OPTIONS请求的响应(OPTIONS请求无POST参数)。

  • 服务器安全规则拦截
    服务器部署的WAF、Apache的mod_security、Nginx的安全规则可能会拦截你的POST请求,将参数清空或者直接拦截请求。可以检查服务器的访问日志、安全日志确认请求是否被拦截。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 07:09:07