如何在所有ajax请求中发送令牌

时间:2012-11-28 09:55:18

标签: ajax jquery post token

有没有办法在页面的所有ajax请求中发送令牌,而不是在每个$ .ajax({})调用中写入?

3 个答案:

答案 0 :(得分:0)

使用全局beforeSend AJAX事件修改任何AJAX请求:http://docs.jquery.com/Ajax_Events

更新:我刚检查过,似乎不推荐使用此事件,因此请改用:http://api.jquery.com/jQuery.ajaxPrefilter/

答案 1 :(得分:0)

您可以全局设置此      var token =“some value”;

     $.ajaxSetup
        (
           {
               cache:false,
               beforeSend: function (xhr) { xhr.setRequestHeader('Authorization', token); }
           }
        );

或者你可以在beforesend选项中单独设置一个特定的请求。

    beforeSend: function (xhr) { xhr.setRequestHeader('Authorization', token); }
           }

答案 2 :(得分:0)

首先,您必须在脚本行的开头设置它:

    $(function () {
        var token = $('input[name="_csrf"]').val();
        $(document).ajaxSend(function(e, xhr, options) {
            console.log("ajax token!!!");
            xhr.setRequestHeader('X-CSRF-Token', token);
        });
    });

然后你通常可以进行所有的ajax调用......

    $(function(){
        $('#ddlGiro').change(function(){
            var contentResult=document.getElementById('divComboComercio');
            var giro = $("#ddlGiro").val();
             $.ajax({
                 url: [[@{'/comun/comercios/obtener/'}]] + giro,
                 data:  {"origen" : 'AsignarLote'},
                 dataType:'text',
                 cache:false,
                 type:'POST',
                 success:function(response){
                     contentResult.innerHTML=response;
                 }                           
             });
        });
    });