混淆了一些Angular2教程并试图获得在Laravel 5.2中工作的帖子请求我添加了这个元标记:
<meta name="csrf-token" content="{{ csrf_token() }}">
但是我不知道如何在标题部分传递它,或者老实说,如果它应该去的地方。
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;
}
由于
答案 0 :(得分:4)
这就是我所做的。不确定它是否是最佳方式,但它有效。
在Laravel主模板中,我添加了这个元标记。
<meta property="csrf-token" name="csrf-token" content="{{ csrf_token() }}">
在Angular2 whatever.service.ts中,我添加了一个get token函数。
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现在接受没有500 Token Mismatch Error
的帖子如果有更好的解决方案,请发信息!
答案 1 :(得分:0)
这应该是相同的&#34;问题&#34;和<title>{{ title() }}</title>
一样:没有component
。这意味着:Angular赢了/不能在这里做任何插值。对于title
标记,角度团队提供可注入的Title
服务。对于meta
代码,您必须推出自己的解决方案。
看看这里:https://wijmo.com/blog/how-to-improve-seo-in-angularjs-applications/
他们使用document.querySelector
访问meta
元素,然后使用setAttribute
来操作其内容。