Laravel4 POST необъяснимый редирект на GET

Я уверен, что это еще один вопрос, на котором я не спал. Я отправляю это как жертву Старшему Богу Мерфи: как только я раскрываю свою дебильность на всеобщее обозрение, ягарантированный найти себе тот ответ, который иначе ускользнет от меня на несколько часов (в качестве дальнейшего покаяния, я также отправлю ответ).

У меня есть HTML-форма, которая отображается как

<form method="post" id="mysearch" action="/search/?uid=1701">
    <input id="searchterm" type="text" name="query" />
</form>

ФормаМожно отправлять через jQuery$.POST с URL '/ поиск' и данными{ uid: '1701', query: $('#searchterm').val() } и это работает.

Если после ввода чего-либо нажать клавишу ВВОД и переопределить отправку jQuery, произойдет следующее:

POST выдается на сервер, как и ожидалось.Route::post('/search', function() {... делаетне получить вызов.301 перемещено навсегда возвращаетсяПОЛУЧИТЬс потерянными параметрами поиска выдается на URL, указанный перенаправлениемСовершенно очевидно, что поиск не проходит.

Ответ 301 выглядит как что-то от Laravel4, добавленное явно:

HTTP/1.0 301 Moved Permanently
Date: Thu, 28 Nov 2013 14:05:29 GMT
Server: Apache
X-Powered-By: PHP/5.4.20
Cache-Control: no-cache
Location: http://development/search?uid=1701
Connection: close
Content-Type: text/html

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="refresh" content="1;url=http://development/search?uid=1701" />
    <title>Redirecting to http://development/search?uid=1701</title>
</head>
<body>
Redirecting to <a href="Redirecting to http://development/search?uid=1701">Redirecting to http://development/search?uid=1701</a>
</body>
</html>

Это не то же самое, чтоэтот вопроспотому что там перенаправление ожидается, и это ответ наэто что нежелательно. Здесь это само перенаправление, которое генерируется без причины, которую я могу (на данный момент) увидеть.

Я подозреваю, что по какой-то причине я запускаю «перенаправление безопасности», описанное вэтот другой ответ, это не вызывается jQuery (либо потому, что он помещает все в POST, в то время как здесь у меня один параметр в URL, а другой в POST, либо потому, что jQuery использует XHR).

Я думал, что это может быть защита CSRF, но этот конкретный маршрут не защищен. В качестве последнего ресурса я защищу CSRF-маршрут и добавлю маркер в форму, даже если он будет выглядеть для меня немного вуду. Нечто похожее происходит вРельсы.

обходные

У меня есть не один, не два, нотри обходные пути, которые аккуратно обходят вопросПочему происходит ли вышеупомянутое:

(самый жестокий) заблокироватьkeyUp событие в форме.перенаправитьпредставить событие формы в jQuery(наиболее прозрачный) направить вышеуказанное событие в$('#search-button').click()

... но я бы хотел сделать без кнопки вообще (что я мог бы сделать с jQuery) ибез JQuery вообще, А также понять, что здесь происходит. Я на 99% уверен, что упускаю что-то очевидное.

отладка

Я сейчас собираюсьgrep -r "Redirecting to" * весь исходный код фреймворка (я ожидаю найти что-то вSymfony/Components/HttpFoundation/ResponseRedirect) и делать шаг за шагом оттуда.

Ответы на вопрос(1)

Ваш ответ на вопрос