405使用POST登录表单时不允许

时间:2019-03-24 21:32:14

标签: php mysql linux nginx

有人可以指出如何修复 405不允许的方法吗? 我有这样的配置 NGINX + PHP + MARIADB

/ etc / nginx / sites-enabled / site

server{
    listen 80;
    root /var/www/portal;

    location / {
        index index.html index.htm index.php;
        if ($request_method !~ ^(GET|POST)$ ) {
        return 405;
        }
    limit_except GET POST { deny  all; }

        if (!-f $request_filename){
            return 302 $scheme://192.168.1.1/index.php;
        }
    }
}

dbconnect.php

<?php
session_start();
ob_start();
$host="localhost";
$username="name";
$pass="pass";
$dbname="db";

$conn = mysqli_connect($host, $username, $pass, $dbname);
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}


$id=$_POST['id'];
$name=$_POST['name'];

$sql = "INSERT INTO table (id, name) VALUES ('$id', '$name')";
if (mysqli_query($conn, $sql)) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}

mysqli_close($conn);

sleep(2);
header("location:upgrading.html");
ob_end_flush();
?>

index.php

<form action="dbconnect.php" method="post">
ID: <input type="password" name="id">
Name: <input type="password" name="name">
<input type="submit" value="Submit" value="Send">

通过移动设备打开此表单并填写 ID 名称字段后,我得到 405不允许

同样使用CURL,我也会遇到相同的错误-> 405不允许:

curl -X POST http://192.168.1.1/index.php
curl -X POST http://192.168.1.1/dbconnect.php

尽管GET通过了:

curl -v http://192.168.1.1/index.php | grep 'HTTP'
...
< HTTP/1.1 200 OK
< Server: nginx/1.14.2
...

如果我尝试获取另一个文件(不存在->例如123.php),则会得到 302找到->,这样就可以了。 在运行另一个命令之后:

tcpflow -i any -C -g port 80 | grep -I "id="

我可以通过CLI在线查看所有输入的数据。 我不知道哪里可能出错。可能我错过了一些东西。请帮助)))

0 个答案:

没有答案
相关问题