如何使用js或jQuery将自定义HTTP标头添加到ajax请求中?

有没有人知道如何使用JavaScript或jQuery添加或创建自定义HTTP标头?


答案 1

有几种解决方案,具体取决于您的需求...

如果要将自定义标头(或标头集)添加到单个请求中,则只需添加该属性:headers

// Request with custom header
$.ajax({
    url: 'foo/bar',
    headers: { 'x-my-custom-header': 'some value' }
});

如果要向每个请求添加默认标头(或标头集),请使用:$.ajaxSetup()

$.ajaxSetup({
    headers: { 'x-my-custom-header': 'some value' }
});

// Sends your custom header
$.ajax({ url: 'foo/bar' });

// Overwrites the default header with a new header
$.ajax({ url: 'foo/bar', headers: { 'x-some-other-header': 'some value' } });

如果要为每个请求添加一个标头(或一组标头),则将钩子与 :beforeSend$.ajaxSetup()

$.ajaxSetup({
    beforeSend: function(xhr) {
        xhr.setRequestHeader('x-my-custom-header', 'some value');
    }
});

// Sends your custom header
$.ajax({ url: 'foo/bar' });

// Sends both custom headers
$.ajax({ url: 'foo/bar', headers: { 'x-some-other-header': 'some value' } });

编辑(更多信息):需要注意的一件事是,使用您只能定义一组默认标头,并且只能定义一个 。如果多次调用,则只会发送最后一组标头,并且只会执行发送前的最后一个回调。ajaxSetupbeforeSendajaxSetup


答案 2

或者,如果要为将来的每个请求发送自定义标头,则可以使用以下方法:

$.ajaxSetup({
    headers: { "CustomHeader": "myValue" }
});

这样,每个将来的 ajax 请求都将包含自定义标头,除非被请求的选项显式覆盖。您可以在此处找到更多信息ajaxSetup