2015-12-23 72 views
4

我想在laravel中創建一個路由發佈,我使用「get」,它工作正常,但是當我使用「發佈」,「刪除」等不工作它返回錯誤500(內部服務器錯誤)。Laravel路由發佈不允許

還有就是我的航線代碼

Route::post('Register' ,function(){ 
    return "Hello World"; 
}); 

我使用擴展谷歌瀏覽器「高級REST客戶端」,以執行一個「後」,這給了我,信息

Request headers 
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36 
Origin: chrome-extension://hgmloofddffdnphfgcellkdfbfbjeloo 
Content-Type: application/json 
Accept: */* 
Accept-Encoding: gzip, deflate 
Accept-Language: pt-PT,pt;q=0.8,en-US;q=0.6,en;q=0.4 
Cookie: XSRF-TOKEN= 


Response headers 
Host: localhost:60967 
Connection: close 
X-Powered-By: PHP/5.5.12 
Cache-Control: no-cache, private 
date: Wed, 23 Dec 2015 01:51:29 GMT 
Content-type: text/html 

我在尋找幾個小時,我找不到解決方案。

+0

您需要檢查日誌文件。也許你遇到了問題http://laravel.com/docs/5.1/routing#csrf-protection –

+0

尋求調試幫助的問題(「爲什麼不是這個代碼工作?」)必須包括所需的行爲,特定的問題或錯誤和在問題本身中重現它所需的最短代碼。沒有明確問題陳述的問題對其他讀者無益。請參閱:如何創建一個最小化,完整和可驗證示例.http://stackoverflow.com/help/mcve – Ross

回答

3

你XSRF令牌丟失。默認情況下,新的Laravel應用程序中的所有路由都已打開CSRF保護。

您需要通過設置_token將有效令牌添加到POST請求標頭或POST數據本身。

如果您只需測試POST路由本身,您可以暫時禁用CSRF中間件,或者在個案基礎上應用它。

禁用
應用程序/ HTTP/Kernel.php

protected $middlewareGroups = [ 
    'web' => [ 
     \App\Http\Middleware\EncryptCookies::class, 
     \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, 
     \Illuminate\Session\Middleware\StartSession::class, 
     \Illuminate\View\Middleware\ShareErrorsFromSession::class, 
     //\App\Http\Middleware\VerifyCsrfToken::class, //Comment this out 
    ], 
    'api' => [ 
     'throttle:60,1', 
    ], 
]; 
/** 
* The application's route middleware. 
* 
* These middleware may be assigned to groups or used individually. 
* 
* @var array 
*/ 
protected $routeMiddleware = [ 
    'auth' => \App\Http\Middleware\Authenticate::class, 
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 
    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 
    'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 
]; 

啓用如路線中間件
應用程序/ HTTP/Kernel.php

protected $middlewareGroups = [ 
    'web' => [ 
     \App\Http\Middleware\EncryptCookies::class, 
     \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, 
     \Illuminate\Session\Middleware\StartSession::class, 
     \Illuminate\View\Middleware\ShareErrorsFromSession::class, 
    ], 
    'api' => [ 
     'throttle:60,1', 
    ], 
]; 
/** 
* The application's route middleware. 
* 
* These middleware may be assigned to groups or used individually. 
* 
* @var array 
*/ 
protected $routeMiddleware = [ 
    'auth' => \App\Http\Middleware\Authenticate::class, 
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 
    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 
    'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 
    'csrf' => \App\Http\Middleware\VerifyCsrfToken::class, //Move it here 
]; 
+0

它的工作原理,謝謝你真的救了我 –

+0

隨時。請記住:CSRF保護非常值得推薦。如果您爲了測試而臨時禁用它,那很好。但我強烈建議全局重新啓用它,或者至少在接受用戶輸入的任何路由上手動應用它。 – maiorano84

+0

我是新來的PHP和laravel,我不知道,我要去搜索,並嘗試實現。 –

1
  1. 你試圖翻鬥自動加載

    composer dump-autoload 
    
  2. 你檢查路由是否上市?

    php artisan route:list 
    
  3. 你實際使用後(使用表格或像郵遞員的應用程序)