php:// input输出一个空字符串

Dim*_*tar 5 php io

我正在从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>
Run Code Online (Sandbox Code Playgroud)

并且在标头上,我只有Content-Type:application / xml 我将其发送到包含以下代码的php文件:

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

echo "<pre>";
print_r(htmlspecialchars($xml));
echo "</pre>";
Run Code Online (Sandbox Code Playgroud)

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

我在付费服务器上的设置是: 在此处输入图片说明

我的失眠屏幕如下所示: 在此处输入图片说明 在此处输入图片说明

输出来自以下代码:

echo "<pre>";
print_r($_POST);
echo "</pre>";
Run Code Online (Sandbox Code Playgroud)

输出空数组,并:

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

输出“ application / xml”。

:在我看来,我应该用HTTPS而不是HTTP来写地址。

Ani*_*wat 1

许多因素会影响这一点:

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

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

  • 另外如果allow_url_fopen设置为Off. 要允许 url fopen,您只需在以下位置添加一行php.iniini_set("allow_url_fopen", true);

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

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