Почему запросы с метода POST перенаправляются на GET?

Сайт на Wordpress
Я в htaccess добавил api

RewriteCond %{REQUEST_URI} ^/api/ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ api/api.php [QSA,L]

при попытке POST запроса я вижу в браузере сперва 301 редидект и потом повторно загрузка по тому же адресу GET запроса.
Хотя в Postman при тестировании POST методом- сервер отвечает. Как мне в браузере получить ответ POST методом?


Ответы (1 шт):

Автор решения: Rakzin Roman

Оказывается, Апач при POST-запросе на URL папки без конечного слеша, перенаправляет на URL со слешем и при этом запрос трансформируется в GET. Если же слеш поставить, то эффект пропадает.

Вывод: В action формы ставьте всегда слеш в конце URL папки, а лучше используйте URL файла.
Получается такая схема
1. Мы посылаем POST на mysite/mydir
2. Сервер отвечает нам 301 на mysite/mydir/ (почему это правильно, описано в документации к Апачу)
3. Браузер делает GET без параметров на mysite/mydir/ (так и надо делать, это описано в RFC 2616)

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

→ Ссылка