Nginx 使用 content-type 标头删除帖子数据

Nginx 使用 content-type 标头删除帖子数据

我正在发表如下帖子:

curl 'http://localhost/api.php' -H 'Content-Type: application/json' --data 'names=[{"name":"name"}]'

这导致帖子数据被删除。

如果我删除内容类型标头,例如

curl 'http://localhost/api.php' --data 'names=[{"name":"name"}]'

帖子数据存在。

Nginx 配置包括以下内容:

server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/;

server_name _;

location ~ \.php$
{
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php7.2-fpm.sock;
}   

location / {
    try_files $uri $uri/ =404;
    index index.html; 
    autoindex on;
}
}

有人知道这是为什么吗?

答案1

我怀疑这是 Nginx 的错。试试

curl -H 'Content-Type: application/json' -d 'names=[{"name":"name"}]' 'http://localhost/api.php'

PHP 确实收到了 JSON 数据,但我能检索它的唯一方法是

    $json = file_get_contents('php://input');
    var_dump($json);

这给了

string(23) "names=[{"name":"name"}]"

即使 phpinfo() 也不会显示数据,只显示标题类型和内容大小。

我忘记了GeekForGeeks 指南

相关内容