Как я могу отклонить запросы страницы REQUEST_METHOD? - PullRequest
0 голосов
/ 27 июня 2019

У меня есть страница, на которой должны быть разрешены только заголовки 'POST', но в настоящее время она принимает все.

Это код, который у меня уже есть.

В эхе отображается метод, использованный при тестировании в Postman, независимо от того, какой метод я использую, я получаю результат 200 OK.

Нужно ли что-нибудь добавить в конфигурацию .htaccess или Apache?

// required headers
    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, Authorization, X-Requested-With");

    echo ($_SERVER["REQUEST_METHOD"]);

Ответы [ 2 ]

0 голосов
/ 27 июня 2019

Чтобы проверить через PHP разрешенный метод и отправить отдельную ошибку:

if ($_SERVER["REQUEST_METHOD"] !== 'POST') {
    header('HTTP/1.0 403 Forbidden');
    echo 'This method is not allowed!';
    exit;
}
// Here comes your regular code
0 голосов
/ 27 июня 2019

Чтобы разрешить только запрос POST, вы можете добавить его в файл htaccess:

<LimitExcept POST HEAD>
    Order Allow,Deny
    Deny from all
</LimitExcept>

Редактировать

Или вы можете сделать это на PHP-скрипте:

$currentRequestMethod = $_SERVER['REQUEST_METHOD'];

//A PHP array containing the methods that are allowed.
$allowedRequestMethods = array('POST', 'HEAD');

//Check to see if the current request method isn't allowed.
if(!in_array($currentRequestMethod, $allowedRequestMethods)){
    //Send a "405 Method Not Allowed" header to the client and kill the script
    header($_SERVER["SERVER_PROTOCOL"]." 405 Method Not Allowed", true, 405);
    exit;
}

Ссылка: PHP: блокировать POST-запросы

...