Почему запросы с метода 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 методом?
  • Вопрос задан
  • 461 просмотр
Решения вопроса 1
@TwoRS Автор вопроса
Оказывается, Апач при POST-запросе на URL папки без конечного слеша, перенаправляет на URL со слешем и при этом запрос трансформируется в GET. Если же слеш поставить, то эффект пропадает.

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

В итоге мы вместо нашего POST с параметрами получаем GET без параметров. Все логично, но несколько неожиданно.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
New_Horizons
@New_Horizons
Бред:
https://developer.mozilla.org/ru/docs/Web/HTTP/Sta...

Насколько я понял, браузер забивает болт на сохранение метода запроса при 301 редиректе. Надо 308.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы