我认为这可能是Laravel代码中的一个问题,但也许我的期望不正确,但是Laravel如何处理重定向响应方法似乎与我不一致。
$router->put('check', function (\Illuminate\Http\Request $request) {
return redirect('/');
});
$router->put('/', function (\Illuminate\Http\Request $request) {
echo 'PUT';
});
$router->get('/', function (\Illuminate\Http\Request $request) {
echo 'GET';
});
使用"原生" HTTP PUT请求(例如使用CURL)我将使用PUT请求重定向到主页面(/),而如果使用带有" _method = put"的HTTP POST请求。参数(在Laravel框架中被解析为PUT请求)我用GET请求重定向。我是否期望出现错误,或者这是Laravel中的一个问题? 我正在使用Laravel Framework 5.2版。
答案 0 :(得分:0)
似乎我对HTTP客户端行为的期望是错误的。一些客户端强制最初的HTTP方法进行重定向。当使用-X参数时,卷曲强制最初的HTTP方法也用于重定向。
请参阅github上的sisves评论
curl -L --data="_method="PUT"`
Issues a POST (since you've sending data), Laravel sees a PUT, and curl uses a GET for redirection.
curl -L -X POST --data "_method=PUT"
Same as above, but you force the redirection to use POST.
curl -L -X PUT
Issues a PUT, and forces a PUT for redirection.