首页 > 解决方案 > php://input 没有数据 apache2

问题描述

我为一个应用程序做了一个 api rest,但我现在遇到一个问题,参数中传递的信息没有到达,我不知道它来自哪里

我的 php 程序是这样的:

<?php
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Methods: POST");
header("Access-Control-Max-Age: 3600");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X- 
Requested-With");

// make sure data is not empty
echo file_get_contents("php://input");
$data = json_decode(file_get_contents("php://input"));
echo $data->user;
echo $data->password;
if(empty($data->user) || empty($data->password)){
    http_response_code(400);
    echo json_encode(array("message" => "Error data not found."));
}
?>

未找到返回错误数据,仅此而已

我的 api rest 位于一个服务器中,该服务器还包含一个带有修改过的路由的 react 网站,以便它可以工作

<Directory /var/www/html/api/>
    Options FollowSymLinks
    AllowOverride None
    Require all granted
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^([^\.]+)$ $1.php [NC,L]
</Directory>

<Directory /var/www/>
    Options FollowSymLinks
    AllowOverride None
    Require all granted
    <IfModule mod_rewrite.c>
       RewriteEngine On
       RewriteBase /
       RewriteRule ^index\.html$ - [L]
       RewriteCond %{REQUEST_URI}  !(API) [NC]
       RewriteCond %{REQUEST_FILENAME} !-f
       RewriteCond %{REQUEST_FILENAME} !-d
       RewriteCond %{REQUEST_FILENAME} !-l
       RewriteRule . /index.html [L]
    </IfModule>
</Directory>

我没有做任何其他更改,谢谢您的帮助

编辑:我像这样添加了三个变量显示

var_dump ($ data);
var_dump ($ data-> user);
var_dump ($ data-> password);

这表明您可以通过此链接自行尝试的所有变量为空 http://dev.craphael.fr/api/user.php?user=Osarel&password=test

编辑2:我添加了

var_dump(file_get_contents("php://input"));

和这个显示

string(0) ""

标签: phpreactjsrest.htaccessapache2

解决方案


推荐阅读