2017-01-12 6 views
2

Я пытаюсь расширить старое веб-приложение, которое использует CodeIgniter 1.7 (я знаю ...), и у меня возникают проблемы. Я хочу, чтобы определенный маршрут был доступен только через запрос POST. Поэтому в верхней части функции у меня есть следующее:PHP REQUEST_METHOD POST превращается в GET

if ($_SERVER['REQUEST_METHOD'] != 'POST') 
    die ('Wrong request method: ' . $_SERVER['REQUEST_METHOD']); 

Локально, на PHP 7.0.14 с встроенным веб-сервером PHP это прекрасно работает. Однако в производстве на сервере под управлением CPanel, работающем под управлением PHP 5.4.25, этого нет.

При отправке запроса на мой маршрут с почтовым почтам POST, я получаю следующее:

Неправильный метод запроса: GET

PUT, PATCH, DELETE ... все запросы получить правильно распознан. POST запросов, однако, кажется магическим образом GET запросов.

POST данные, которые я послал с просьбой, кажется, исчезает, а также и не должны быть найдены в любом $_POST или $_GET.

Кажется, что это не связано с каркасом CodeIgniter, поскольку, когда я вызываю файл вне рамки, я получаю тот же результат.

Любые мысли?

+0

Возможно, тот же ответ, что и http://stackoverflow.com/questions/20268863/laravel4-post-unexplained-redirect-to-get (не уверен, что это дубликат). – LSerni

+0

Какие-либо правила mod_rewrite? –

+0

Кроме того, проверьте журналы доступа, если есть перенаправление. Вполне нормально реагировать с 302 после обработки запросов POST, чтобы избежать повторной отправки формы при перезагрузке страницы. –

ответ

1

Я делал запросы до http://domain, который был настроен для перенаправления на http://www.domain, который, как оказывается, превращает запросы POST в запросы GET. И Почтальон не уведомляет пользователя о таких переадресациях.

Если вы столкнулись с этой проблемой, убедитесь, что есть какие-либо переадресации.

Интересно, почему это происходит только с запросами POST, но не с запросами PUT, PATCH, DELETE, ....

Благодаря LSerni, Alex Blex и Vaviloff для указания меня в правильном направлении.

Смежные вопросы