【问题标题】:Laravel and vue - VerifyCsrfToken except don't workingLaravel 和 vue - VerifyCsrfToken 除了不工作
【发布时间】: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://presenzeauthserver 是另一个域?
  • @RavishaHesh 它几乎看起来就像他们正在使用,除非它是用于检查推荐人或其他东西

标签: ajax laravel vue.js axios


【解决方案1】:

我在VerifyCsrfToken.php中间件中做了:

class VerifyCsrfToken extends Middleware
{    
    protected $except = [
        'api/*',
    ];
}

以及我在 /api/* 中从 /presenze/* 转换的所有路线 现在它工作正常。 我认为它需要使用标准 /api/ 前缀来调用......我认为。 你知道另一种解释吗?如果有人知道,欢迎您的介入。

【讨论】:

    猜你喜欢
    • 2021-08-20
    • 2023-03-16
    • 2015-12-21
    • 2020-09-14
    • 2023-01-14
    • 2017-08-10
    • 2020-04-03
    • 2015-11-14
    • 2020-02-23
    相关资源
    最近更新 更多