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