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.