Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Пользую L 5.1.
Есть необходимость отработать post-запрос, пришедший от сторонней платежной системы.
В запросе отдаются, будем считать, две переменые: status и sign.
Обработка в контроллере пока простейшая:
class OrderController extends Controller {
public function anyPayment(Request $request) {
dd($request->all());
}
}
Отключаю CSRF-проверку добавлением в VerifyCsrfToken:
protected $except = [
'order/payment/*',
];
Итог: dd отдает мне пустой массив.
Далее, проверяю, в принципе данные поступают или нет.
Сооружаю формочку:
<form method = "post" action = "http://mysait/order/payment/">
<div>status <input type = "text" name = "status" value = "abc" /></div>
<div>sign <input type = "text" name = "sign" value = "def" /></div>
<div> <input type = "submit"></div>
</form>
Проверка дает отрицательный результат, данных нет.
В формочке post меняю на get.
Что имеем:
array:2 [▼
"status" => "abc"
"sign" => "def"
]
Вопрос: что делается не так, и есть ли варианты решения этой проблемы?
Не в сети
Вопрос: что делается не так, и есть ли варианты решения этой проблемы?
для начала открой закладку сеть в devtools и отключи очистку списка запросов. после этого повтори тест. на 99% уверен что запрос на "http://mysait/order/payment/" отдаёт редирект на "http://mysait/order/payment" (без слэша). после редиректа браузер уже не отправляет данные в запрос и $request->all() оказывается пустым. угадал?
Не в сети
отдаёт редирект на "http://mysait/order/payment" (без слэша)
Я же явно указал слэш в "http://mysait/order/payment/"
Не в сети
ларавель для известных маршрутов, заканчивающихся на слэш, делает редирект на адрес без слэша
Не в сети
ларавель для известных маршрутов, заканчивающихся на слэш, делает редирект на адрес без слэша
И как можно решить проблему?
Так же сталкивался с этой проблемой при редиректе и внутри проекта, приходилось прописывать кроме post-маршрутов еще и get-маршруты (скажем, при возврате на предыдущую страницу при ошибке ввода в форму).
Не в сети
это не проблема. слэши на конце url - проблема, её ларавель решает
Не в сети
И все же, как заставить (уговорить, запутать, обмануть) лару принять post-данные со стороннего источника?
Не в сети
убрать / из конца url
Не в сети
Спасибо, заработало!
Вот только еще надо было закоментить строчку
'App\Http\Middleware\VerifyCsrfToken'
в app\Http\Kernel.php, иначе сразу сваливалось на домашнюю страницу
Не в сети
Страницы 1