15

我正在尝试使用 JQuery 在 Ajax 中添加请求头。

以下是代码:-

$.ajax({
    类型:“发布”,
    内容类型:“应用程序/json”,
    url: "http://localhost:8080/core-service/services/v1.0/patients/registerPatients",
    数据:JSON.stringify(耐心DTO),
    //跨域:真,
    数据类型:'json',
    标头:{“X-AUTH-TOKEN”:tokken},
    成功:功能(耐心DTO){
        console.log("成功:", PatientDTO);
        /* location.href = "fieldagentHRA.html";*/
        如果(类型(存储)!==“未定义”){
            localStorage.setItem("patUrn", patientDTO.data);
            location.href="fieldagentHRA.html";
        }
    },
    错误:函数(e){
    console.log("错误:", e);
    显示(e);
    },
    完成:函数(e){
    启用注册按钮(真);
    }
});

我用 chrome 检查了这个,发现没有添加标题的正文。没有标题正文

然后我使用了 RequestlyRequestly 是 chrome+firefox 插件,我们可以使用它手动向请求添加标头)。

手动添加标题后:-

手动添加标题后

在这两个图片中,请求标头 x-auth-token 都存在于“ACCESS-CONTROL-REQUEST-HEADERS”中,但“X-AUTH-TOKEN”标头以及标头值存在于第二张图片中,而第二张图片中不存在。

所以我的问题是如何使用 JQuery 在 Ajax 中添加请求标头?

4

1 回答 1

38

有几个解决方案取决于你想要做什么

如果要为单个请求添加自定义标头(或标头集),则只需添加headers属性,这将帮助您发送带有标头的请求。

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

如果想为每个请求添加一个默认标头(或一组标头),那么使用$.ajaxSetup():它可以帮助您添加标头。

//Setup headers here and than call ajax
$.ajaxSetup({
    headers: { 'x-my-custom-header': 'some value' }
});

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

为每个请求添加一个标头(或一组标头),然后将 beforeSend 钩子与 $.ajaxSetup() 一起使用:

//Hook your headers here and set it with before send function.
$.ajaxSetup({
    beforeSend: function(xhr) {
        xhr.setRequestHeader('x-my-custom-header', 'some value');
    }
});

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

参考链接:AjaxSetup

参考链接:AjaxHeaders

于 2017-02-09T10:09:37.167 回答