🍀 简窝 Blog
📃 文章详情

Ajax设置和获取自定义header信息

1、js ajax 设置自定义header

1.1 方法一:

$.ajax({
    type: "POST",
    url: "/requestUrl",
    contentType: "application/json",
    beforeSend: function (request) {
        request.setRequestHeader("access_token", "123456");
    },
    success: function (data) {
        // your code
    }
});

1.2 方法二:

$.ajax({
    headers: {
        "access_token": "123456"
    },
    type: "POST",
    url: "requestUrl",
    contentType: "application/json",
    success: function (data) {
        // your code
    }
});

2、Ajax 获取请求返回的response的header信息

ajax请求完成,会返回xhr(XMLHTTPRequest)对象,这里面会包含返回的头信息,可以通过getResponseHeader(key)和getAllResponseHeaders()获取header信息;

$.ajax({
    type: "POST",
    url: "request",
    contentType: "application/json",
    success: function (data) {
        //your code
    },
    complete: function (xhr, data) {
        /* 
            获取相关Http Response header
            getResponseHeader(key):获取指定头信息
            getAllResponseHeaders():获取全部可默认可获取的头信息
        */
        var date=xhr.getResponseHeader('Date');// 服务器端时间
        
        //获取服务端自定义的header信息
        var stoken = xhr.getResponseHeader('refresh_token');
        
        var list = xhr.getAllResponseHeaders();
        console.log(list);
        /*
        date: Fri, 12 Jul 2022 12:41:00 GMT
        content-encoding: gzip
        server: APACHE
        vary: Accept-Encoding
        content-type: text/plain; charset=utf-8
        servertoken: 123456
        cache-control: private
        content-length: 129
        */
        
    }
});

3、Ajax 跨域请求的情况下获取自定义的header信息

AJAX 跨域请求的时候是不能设置自定义的header信息的,但是是可以在response中获取到服务端自定义的header信息,前提是服务端设置了Access-Control-Expose-Headers;
下面是 JAVA 的服务端示例:

public void ProcessResponse(HttpServletResponse response)
{
    response.setHeader("Access-Control-Allow-Origin", "*");
    response.setHeader("Access-Control-Allow-Headers", "*");
    response.setHeader("Access-Control-Allow-Methods", "*");
    // 自定义header信息
    response.setHeader("refresh_token", "123456");
    response.setHeader("Access-Control-Expose-Headers", "servertoken");
    response.setHeader("Content-Type", "application/json;charset=UTF-8");
    response.Write("Hello World");
}

📑 目录