Laravel不一致的重定向行为

时间:2016-06-05 15:46:39

标签: php laravel http redirect

我认为这可能是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版。

1 个答案:

答案 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.