【发布时间】:2021-05-01 15:26:20
【问题描述】:
我通过我的“presenze”应用程序使用 Vue axios 向另一个 laravel 服务器“AUTHSERVER”发送了一些 POST 请求。 如果我将中间件 VerifyCsrfToken.php 设置为:
class VerifyCsrfToken extends Middleware
{
protected $except = [
'*'
];
}
效果很好,但如果我这样做:
protected $except = [
'http://presenze',
'http://presenze/*',
];
我收到此错误:
XHRPOSThttp://authserver/login/mysql_verify
[HTTP/1.1 419 unknown status 9ms]
....
在中间件中写入 except 数组的正确方法是什么?应用程序请求是 'http://presenze' ! 任何人都可以帮助我吗? 谢谢。 再见。
【问题讨论】:
-
如果您想永远不验证 csrf 令牌,只需删除中间件
:)...尽管您可能确实需要这种保护...您在哪个服务器上调整了此中间件?因为认证服务器不是http://presenze -
$except需要路由(路径),而不是整个 URL。只需添加您需要从 CSRF 验证中排除的路径。即:受保护的 $except = ['/users']。如果您有多个域,请为此创建一个单独的路由文件,并且不要向其中添加 CSRF 中间件 -
@RavishaHesh 我也有同样的想法,但显然你可以传递一个完整的 URL laravel.com/docs/8.x/csrf#csrf-excluding-uris .... 虽然这可能是一个较新的东西,因为我过去很确定它只是“路径模式”
-
@lagbox 嗯,刚刚看到了。还有为什么响应 URL
http://authserver/login/mysql_verify中没有http://presenze?authserver是另一个域? -
@RavishaHesh 它几乎看起来就像他们正在使用,除非它是用于检查推荐人或其他东西