我正在爲所有POST請求默認啓用CSRF保護的Laravel 5應用程序工作。我喜歡這種增加的安全性,所以我正在嘗試使用它。
在做出簡單的$.post()
請求時,我收到了一個'Illuminate\Session\TokenMismatchException'
錯誤,因爲POST數據中缺少必需的表單輸入_token
。這裏是一個問題.post的$請求的例子:
var userID = $("#userID").val();
$.post('/admin/users/delete-user', {id:userID}, function() {
// User deleted
});
我有我的CSRF令牌存儲在我的頭一元場,可以很容易使用訪問:
var csrf_token = $('meta[name="csrf-token"]').attr('content');
是否有可能將此附加到所有傳出$.post()
請求上的json數據?我試圖用頭,但Laravel似乎沒認出來 -
var csrf_token = $('meta[name="csrf-token"]').attr('content');
alert(csrf_token);
$.ajaxPrefilter(function(options, originalOptions, jqXHR){
if (options['type'].toLowerCase() === "post") {
jqXHR.setRequestHeader('X-CSRFToken', csrf_token);
}
});
難道我理解正確的,你想使你的數據對象有一個'_token'場? (例如,類似'options ['data'] ._ token = csrf_token'的東西?)一個工作請求的一個例子會很有幫助,如果你有的話。 – apsillers 2015-02-09 19:37:09
是的,正好... – NightMICU 2015-02-09 19:38:56
爲了使請求工作,我將不得不添加令牌直接發佈數據 - 所以'{id:userID,'_token':令牌}' – NightMICU 2015-02-09 19:41:04