我正在使用 Laravel 11.3 接收来自 Issabel 的事件。当我通过 Issabel 的 Eventhandeler PHP AMI 文件中的 Curl 发送数据时,服务器响应时显示 HTTP 代码 419。 ChatGPT 告诉我代码发生了一些变化,但不幸的是它们不起作用并且适用于以前版本的 Laravel。例如,在
App.php
中添加一些更改,例如:
->withMiddleware(function (Middleware $middleware) {
// Completely disable CSRF for testing
$middleware->withoutCsrf();
})
在其他页面上显示此错误,但从 Issabel 发送数据效果很好。
(!) 致命错误:未捕获错误:调用 C:\Users\Administrator\Desktop echno echnoav ootstrap pp.php 第 16 行中的未定义方法 Illuminate\Foundation\Configuration\Middleware::withoutCsrf()
经过一番谷歌搜索后,我使用了这段代码:
->withMiddleware(function (Middleware $middleware) {
$middleware->validateCsrfTokens(except: [
'missedcalls', // Relative path
'http://192.168.10.29/*', // Full URL with wildcard
]);
})
这与其他页面配合良好,但当我从 Issabel 发送数据时显示 http 错误 419。
现在的问题是如何在 Laravel 11.3 上禁用某些地址的 CSRF。正如这些链接 Laravel CSRF 和 Laravel Changes 中提到的,Laravel 11 中发生了许多变化,但没有很好的文档。我很感激任何帮助。
添加此代码应该可以工作。如果不起作用请告诉我发生了什么事
class VerifyCsrfToken extends BaseVerifier
{
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array<int, string>
*/
protected $except = [
'missedcalls', // Specific route
'http://192.168.10.29/*', // Full URL with wildcard
'api/issabel-webhook/*', // Example for Issabel-specific routes
];
}