2016-04-15 74 views
0

通過一些Angular2教程混混並試圖獲得一個POST請求在Laravel 5.2工作,我已經加入此meta標籤:Angular2的Http Laravel CSRF令牌

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

,但我不知道怎麼打發,在標題部分或老實說,如果這是它應該去的地方。

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

更新:所以我增加了一個功能,拉動從meta標籤的CSRF令牌,但至今還沒有找到一種方式來獲得它傳遞給Laravel post請求。

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

感謝

回答

3

這就是我所做的。不知道這是否是最好的方式,但它的工作。

在主要的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令牌不匹配錯誤

請附和,如果有一個更好的解決方案!

0

這應該是同樣的 「問題」 與<title>{{ title() }}</title>:有沒有component。這意味着:Angular在這裏不會/不能做任何插值。對於title標籤,角度團隊提供注射Title服務。對於meta標籤,您必須推出自己的解決方案。

看一看這裏:https://wijmo.com/blog/how-to-improve-seo-in-angularjs-applications/

他們用document.querySelector訪問meta元素,然後setAttribute操縱其內容。

+0

謝謝本傑明。元標記語法是Laravel,它會生成令牌。我用一個函數更新了問題,將令牌拉到Angular2中,所以我現在有了Angular的令牌,我不知道如何將它傳遞給Laravel。 – BrioDev