【问题标题】:php://input is outputting an empty string [closed]php://input 正在输出一个空字符串 [关闭]
【发布时间】:2019-08-20 04:27:32
【问题描述】:

我从 Insomnia(类似 PostMan 的软件)发送此请求。我正在发送一个简单的 XML 文件

<?xml version='1.0' encoding='UTF-8'?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

Header 我只有 Content-Type: application/xml 我将其发送到包含此代码的 php 文件:

$xml = file_get_contents('php://input');

echo "<pre>";
print_r(htmlspecialchars($xml));
echo "</pre>";

输出一个空字符串。在我的本地服务器上,它以应有的方式输出 xml 文件。

我在付费服务器上的设置是:

我的失眠屏幕如下所示:

输出来自这段代码:

echo "<pre>";
print_r($_POST);
echo "</pre>";

输出空数组并:

if (!empty($_SERVER['CONTENT_TYPE']) && $_SERVER['CONTENT_TYPE'] == 'application/xml') {
    echo "application/xml";
}

输出“应用程序/xml”。

答案:在我的情况下,我应该用 HTTPS 而不是 HTTP 来写地址。

【问题讨论】:

    标签: php io


    【解决方案1】:

    许多因素都会影响这一点:

    • 这可能是因为您访问的网站 URL 不正确。例如:http://mysitehttps://mysite 是两个不同的站点。

    • 如果您将请求作为表单数据发送,则可能会发生这种情况。

    • 如果allow_url_fopen 设置为Off。要允许 url fopen,您只需在 php.ini 中添加一行:ini_set("allow_url_fopen", true);

    • 如果您有从 mysite.comsomething.mysite.com 的重定向,甚至可能会发生这种情况,反之亦然。要验证任何重定向,您应该首先检查.htaccess。如果没有使用.htaccess 进行重定向,则在超级全局中添加某种计数,如$_SESSION 并增加它。如果计数大于 1,则您有重定向。

    • 您也许可以在服务器日志中找到一些信息。

    【讨论】:

      猜你喜欢
      • 2013-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-24
      • 1970-01-01
      • 1970-01-01
      • 2021-04-15
      相关资源
      最近更新 更多