問題:
我正在執行5.5 中AJAX 呼叫但遇到「419 (未知狀態)」錯誤。儘管我的頁面上沒有任何表單,但我懷疑問題出在 CSRF 令牌上。我該如何解決這個問題?
答案:
客戶端:
在HTML head 部分中,插入以下:
<meta name="csrf-token" content="{{ csrf_token() }}">
這會產生一個唯一的CSRF 令牌,伺服器將使用該令牌驗證傳入請求。
AJAX 請求:
修改您的AJAX 請求以在標頭中包含CSRF 令牌:
$.ajaxSetup({ headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') } });
這可確保伺服器可以驗證請求的來源並防止CSRF
Laravel中介軟體(可選):
Laravel 自動套用 CSRF 中介軟體來保護 POST 要求。要針對特定路由(例如,處理AJAX 調用的中間件)禁用此中間件,請將以下行添加到您的AppHttpMiddlewareVerifyCsrfToken 中間件:
/** * The URIs that should be excluded from CSRF verification. * * @var array */ protected $except = [ '/fetch-company/*', ];
參考:
以上是Laravel 5.5 AJAX 419 錯誤:如何修復 CSRF 令牌問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!