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