2017-02-22 76 views
0

我只使用JavaScript。如何在JavaScript中爲laravel設置CSRF?

而且我知道jQuery將設置由年代CSRF,

$(function() { 
    $.ajaxSetup({ 
    headers: { 
     'X-CSRF-Token': $('meta[name="_token"]').attr('content') 
    } 
    }); 
}); 

但我怎麼能在JavaScript中使用 「CSRF令牌」?

對於所有的Ajax調用有沒有任何可能的共同設置?

+0

你是什麼意思,我怎麼用? –

+0

ajaxSetup爲每個ajax請求設置了包含csrf標記的標頭 –

+0

您明白jQuery *是* Javascript,對嗎?您是否問如何在不使用jQuery的情況下將CSRF標記添加到AJAX請求的標頭? – maiorano84

回答

4

要在所有ajax調用中使用通用的csrf令牌,請在主佈局刀片文件中放入以下代碼。

在佈局標題:

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

在佈局頁腳:

<script type="text/javascript"> 
    jQuery(document).ready(function() {  
     jQuery.ajaxSetup({   
      headers: {    
       'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')   
      }  
     });  
    }); 
</script> 

這會爲你的所有Ajax請求工作。

感謝

+0

我只想要JavaScript,而不是jQuery! –

+0

在JavaScript中,您必須爲每個請求設置令牌oin標頭。像xhr.setRequestHeader(「X-CSRFToken」,csrf_token); –

1

可以包括佈局頭球高出

看起來一樣,但如果你想使用純JavaScript包括令牌可以使用:

var xhttp = new XMLHttpRequest(); 
xhttp.open("POST", url , true); 
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
xhttp.setRequestHeader("X-CSRF-TOKEN", document.head.querySelector("[name=csrf-token]").content); 
xhttp.send(params); 

希望能幫到你的代碼^^