Angular2 和 Laravel CSRF 保护

Angular2 and Laravel CSRF protection

我已经读了一些topics

而我遇到的问题就出在这段代码

<meta property="csrf-token" name="csrf-token" content="{{ csrf_token() }}">

我使用 Angular2 作为核心引擎,它将 AJAX 请求发送到 Laravel API 而我没有使用 blade 模板 - 只是 .html files,所以我无法从 html 文件

调用 php 函数 csrf_token()

所以,我通过扩展我的 /var/www/pandacrm/app/Http/Middleware/VerifyCsrfToken.php 文件

public function handle($request, Closure $next)
{
    if ( ! $request->is('api/*'))
    {
        return parent::handle($request, $next);
    }

    return $next($request);
}

但这似乎不是解决此问题的最佳方法,是否有其他解决方案来解决此问题?

您可以通过在 html 文件中使用 JavaScript 创建带有 csrf-tokenmeta 标签!

如何操作:

向Laravel路由发送Ajax请求以获取令牌。 (控制器操作中的 return csrf-token)然后在 html 文件中使用该标记创建元标记。

但在执行此操作之前,您必须在该特定路由上禁用 csrf 保护。 对于 5.3 here for laravel5 and here,有一种方法可以做到这一点。

现在您有一个带有 csrf 的元标记,可用于其他 ajax 请求。