Angular2 Http Laravel CSRF 令牌

Angular2 Http Laravel CSRF Token

通过一些 Angular2 教程并试图让 post 请求在 Laravel 5.2 中工作 我添加了这个元标记:

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

但我不确定如何在 headers 部分传递它,或者老实说它是否应该传递给它。

    let headers = new Headers({ 'Content-Type': 'application/json', 'X-CSRF-TOKEN': '???????' });

更新:所以我添加了一个函数来从元标记中提取 csrf-token,但仍然没有找到将其传递给 Laravel post 请求的方法。

    getToken() {
      let token = document.querySelector('meta[property="csrf-token"]')['content'];
      return token;
   }

谢谢

这应该与 <title>{{ title() }}</title> 相同 "problem":没有 component。这意味着:Angular不会t/can在这里做任何插值。对于 title 标签,angular 团队提供了可注入的 Title 服务。对于 meta 标签,您必须推出自己的解决方案。

看这里:https://wijmo.com/blog/how-to-improve-seo-in-angularjs-applications/

他们使用 document.querySelector 访问 meta 元素,然后 setAttribute 操作其内容。

这就是我所做的。不确定这是否是最好的方法,但确实有效。

在主 Laravel 模板中,我添加了这个元标记。

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

在 Angular2 中 whatever.service.ts 我添加了一个获取令牌功能。

getToken() {
  let token = document.querySelector('meta[property="csrf-token"]')['content'];
  return token;
  }

在同一服务中,我将此添加到 post 方法。

let headers = new Headers({ 'Content-Type': 'application/json', 'X-CSRF-TOKEN': this.getToken()});

Laravel 现在接受 post 而没有 500 令牌不匹配错误

如果有更好的解决办法请指教!!