如何为所有xmlHttpRequest设置自定义标头

时间:2015-02-05 10:45:30

标签: javascript jquery asp.net ajax asp.net-mvc-4

我必须为所有ajax请求添加自定义标头。我可以使用以下代码执行此操作。除了一个案例。

$.ajaxPrefilter(function (options) {
        if (!options.beforeSend) {
            options.beforeSend = function (xhr) {
                xhr.setRequestHeader('Token', '1234');
            }
        }
});

假设我们在$ .ajax请求中放入beforesend,则上述预过滤器未触发(下面的示例)。你能告诉我怎样才能通过保持两者来实现它?我们有没有办法向xmlHttpRequest添加标头,以便我们可以使用来自应用程序的所有ajax请求?

 $("#AdvancedserchClick").on("click", function () {
        $.ajax({
            async: false,
            cache: false,
            type: "POST",
            url: getUrlWithTabId("@Url.Action("AdvancedSearch",   "AdvancedSearch")"),
            beforeSend: function () {
                Load.show();
            },
            success: function (result) {
                $("#advancedsearch").modal('show');
                $("#advancedsearch").html(result);
            },
            complete: function () {
                Load.hide();
            }
        });
    });

2 个答案:

答案 0 :(得分:0)

您可以使用以下代码

来实现此目的
$.ajax({
    url: 'foo/bar',
    headers: { 'x-my-custom-header': 'some value' }
});

或者您可以使用预过滤器来实现此目的,但这样所有请求都将获得自定义标头,除非特定请求覆盖beforeSend选项。

$.ajaxPrefilter(function( options ) {
    if ( !options.beforeSend) {
        options.beforeSend = function (xhr) { 
            xhr.setRequestHeader('CUSTOM-HEADER-KEY', 'CUSTOM-HEADER-VALUE');
        }
    }
});

希望这有帮助。

答案 1 :(得分:0)

$.ajaxPrefilter(function( options, originalOptions, xhr ) {
  xhr.setRequestHeader('Token', '1234');
 });

文档说:

 jQuery.ajaxPrefilter( [dataTypes ], handler ) 

 Description: Handle custom Ajax options or modify existing options before   
 each request is sent and before they are processed by $.ajax()