首页 >后端开发 >php教程 >何时以及如何处理 Laravel POST 和 PUT 请求中的 419 状态代码?

何时以及如何处理 Laravel POST 和 PUT 请求中的 419 状态代码?

DDD
DDD原创
2024-10-18 20:33:30997浏览

When and How to Handle the 419 Status Code in Laravel POST and PUT Requests?

了解 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn