了解Laravel API 中POST 與PUT 方法的419 狀態碼
使用Laravel 開發RESTful API 時,常會遇到419發出POST或PUT 請求時的狀態代碼。此狀態代碼表示請求由於缺少有效的 CSRF 令牌而被拒絕。
根本原因
預設情況下,Laravel 使用 CSRF 令牌來防止交叉- 站點請求偽造(CSRF)攻擊。當使用 Web 中間件群組進行 API 路由時,會啟用 CSRF 驗證,並且任何修改應用程式狀態的請求(例如 POST 或 PUT)都需要有效的令牌。
對於非Web -基於API
如果您正在開發不適合從Web 瀏覽器使用的API(例如行動應用程式或命令列工具),則不需要CSRF 保護,因為這些環境通常不易受到CSRF 攻擊。
要停用非基於 Web 的 API 的 CSRF 驗證,您可以將 API 路由移至 paths/web.php 檔案中的 Web 中介軟體群組之外,或使用 api.php檔案取代。在 api.php 中,CSRF 驗證會自動停用。
對於基於Web 的API
如果您正在開發將從Web 瀏覽器存取的API,您可能希望避免將整個API 路由組排除在CSRF 驗證之外。相反,您可以選擇性地排除您知道不會受到 CSRF 攻擊的特定路由。
為此,請將這些路由加入VerifyCsrfToken 中間件中的$ except 陣列中:
<code class="php">namespace App\Http\Middleware; use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier; class VerifyCsrfToken extends BaseVerifier { protected $except = [ '/api/stripe/*', '/api/non-susceptible-route', ]; }</code>
這種方法允許您為大多數API 路由維持CSRF 保護,同時免除不太可能成為CSRF 攻擊目標的特定路由。
以上是何時以及如何處理 Laravel POST 和 PUT 請求中的 419 狀態代碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!