2017-02-22 126 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); 

希望能帮到你的代码^^