首頁 >後端開發 >php教程 >如何解決 Laravel 5.5 AJAX'419(未知狀態)”CSRF 錯誤?

如何解決 Laravel 5.5 AJAX'419(未知狀態)”CSRF 錯誤?

Patricia Arquette
Patricia Arquette原創
2024-12-04 16:49:11222瀏覽

How to Resolve the Laravel 5.5 AJAX

Laravel 5.5 AJAX 呼叫:解決「419(未知狀態)」錯誤

在Laravel 5.5 中執行AJAX 請求時,您可能會遇到「419(未知狀態)」錯誤。這通常表示跨站請求偽造 (CSRF) 令牌驗證存在問題。

了解 Laravel 的 CSRF 保護

Laravel 的 CSRF 保護機制可防止透過以下方式提交未經授權的請求你的網站。它透過產生每個 POST 請求中必須包含的唯一令牌來實現此目的。

修正 419 錯誤

要修復 419 錯誤,您需要確保您的 AJAX 請求受到 CSRF 令牌的適當保護。您可以分兩步驟執行此操作:

  1. 在 HTML 標頭中產生 CSRF 令牌

    中產生 CSRF 令牌。在視圖部分,新增以下內容:
    <meta name="csrf-token" content="{{ csrf_token() }}">
  2. 在 JavaScript 中擷取 CSRF 令牌:
    在 AJAX 請求設定中,擷取 CSRF令牌來自標頭中的標記:

    $.ajaxSetup({
      headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
      }
    });

範例實作

這是帶有CSRF 令牌保護的AJAX 呼叫的更新版本:

$('.company-selector li > a').click(function(e) {
  e.preventDefault();

  var companyId = $(this).data("company-id");

  $.ajaxSetup({
    headers: {
      'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
  });

  $.ajax({
    url: '/fetch-company/' + companyId,
    dataType: 'json',
    type: 'POST',
    data: {},
    contentType: false,
    processData: false,
    success: function(response) {
      console.log(response);
    }
  });
});

透過合併這些更改,您的AJAX 請求將受到CSRF的保護攻擊,解決“419(未知狀態)”錯誤。

以上是如何解決 Laravel 5.5 AJAX'419(未知狀態)”CSRF 錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn