我正在从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";
}
输出“ application / xml”。
答案:在我的情况下,我应该使用 HTTPS 而不是HTTP来写地址。
答案 0 :(得分:1)
许多因素可能会影响这一点:
这可能是因为您访问的网站网址不正确。例如:http://mysite和https://mysite是两个不同的站点。
如果您将请求作为表单数据发送,则可能会发生。
也将allow_url_fopen
设置为Off
。要允许url fopen,您只需在php.ini
中添加一行:ini_set("allow_url_fopen", true);
如果您有从mysite.com
到something.mysite.com
的重定向,甚至可能重定向,反之亦然。要验证任何重定向,您应该首先检查.htaccess
。如果没有使用.htaccess
进行重定向,则在$_SESSION
之类的super global中添加某种计数,并将其递增。如果计数大于1,则您具有重定向。
您也许可以在服务器日志中找到一些信息。