2016-06-05 9 views
2

Ich denke, dass dies ein Problem innerhalb des Laravel-Codes sein könnte, aber vielleicht sind meine Erwartungen nicht korrekt, aber wie Laravel behandelt die Redirect-Antwort-Methoden scheint mir nicht konsistent.Laravel inkonsistentes Redirect-Verhalten

$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'; 
    }); 

Wenn eine „native“ HTTP PUT-Anforderung (zB cURL) werde ich auf die Hauptseite (/) mit einer PUT-Anfrage umgeleitet werden, während, wenn eine HTTP POST-Anforderung mit einem „_method = PUT "Parameter (der als PUT-Anfrage innerhalb des Laravel-Frameworks aufgelöst wird) Ich wurde mit einer GET-Anfrage umgeleitet. Erwarte ich etwas falsch oder ist das ein Problem in Laravel? Ich benutze das Laravel Framework Version 5.2.

+0

ich ein ähnliches Problem hatte, aber nicht daran erinnern, wie es endete. Es war etwas wie Laravel schickte einen Post mit der Attribut-Methode setzen und dann umleiten. Führen Sie var_dump ($ _ SERVER) aus, und überprüfen Sie die Anforderungsmethode auf diese Weise. – Cristo

Antwort

0

Scheint, dass meine Erwartungen in Bezug auf das HTTP-Client-Verhalten falsch waren. Einige Clients erzwingen die anfängliche HTTP-Methode für eine Weiterleitung. Curl erzwingt die anfängliche HTTP-Methode auch für die Umleitung, wenn der Parameter -X verwendet wird.

Siehe sisves Kommentar auf Github

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. 
Verwandte Themen