2016-05-31 106 views
0

我在KeystoneJS中存在csrf令牌不匹配的問題。 我在航線使用本文件:CSRF不匹配令牌

keystone.pre('routes', keystone.security.csrf.middleware.validate); 
keystone.pre('routes', keystone.security.csrf.middleware.init); 

在我的客戶端代碼,我設置使用jQuery一個X-CSRF令牌頭:

$.ajaxSetup({ headers: { 'x-csrf-token' : '{{csrf_token_value}}' } }); 

現在我發個帖子請求路由定義在我的路線文件中。我的請求頭和我的cookie中的csrf標記是相同的。我錯過了什麼?

非常感謝提前! Daniel

回答

1

對我來說,解決方案是製作一個元標記並用它來填充我的ajaxSetup方法。

<meta name="csrf-token" content="{{csrf_token_value}}"> 

$.ajaxSetup({ 
    headers: { 
     'x-csrf-token': $('meta[name="csrf-token"]').attr('content') 
    } 
}); 

現在也令牌在我的頭和發送cookie是不同的(也許是一個在cookie被KeystoneJS加密?)。

我不明白爲什麼如果我直接在我的ajaxSetup方法或元標記中放置令牌會有什麼影響?

如果有人能解釋給我,我會很高興。它肯定會提供這個答案,因爲只有'如何'被強化,而不是'爲什麼'。