POST-запросы рассматриваются сервером как GET

Здесь действительно странная проблема. При отправке почтовых запросов на мой PHP скрипт

$_SERVER['REQUEST_METHOD'] 

возвращает "GET" вместо "POST".

Он отлично работает для любого другого метода REST

так вот что я получаю

GET -> GET
POST-> GET
PUT -> PUT
DELETE -> DELETE

Это происходит только на одном из моих серверов, поэтому я предполагаю, что это проблема с Apache, и мне удалось выяснить, что это произойдет, только если я добавлю "www" в свой URL.

Т.е.

www.something.com

вызывает проблему, но

something.com

не

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

Какие-нибудь мысли

1 ответ

Решение

Как указано в спецификации HTTP для кодов ответов 301 и 302:

Примечание. По историческим причинам пользовательский агент МОЖЕТ изменить метод запроса с POST на GET для последующего запроса. Если это поведение нежелательно, вместо него можно использовать код состояния 307 (временное перенаправление).

Третья (но маловероятная) возможность - получить ответ 303 на начальный URI. Решение имеет два аспекта:

  • Сконфигурируйте клиентов, находящихся под вашим контролем, на POST с каноническим URI, чтобы они вообще не перенаправлялись.
  • Сконфигурируйте свой сервер для перенаправления, используя 307 в этом случае вместо 301/302.
Другие вопросы по тегам