一尘不染

使用jQuery将访问控制请求标头添加到AJAX请求的标头中

javascript

我想向jQuery的AJAX POST请求添加自定义标头。

我已经试过了:

$.ajax({
    type: 'POST',
    url: url,
    headers: {
        "My-First-Header":"first value",
        "My-Second-Header":"second value"
    }
    //OR
    //beforeSend: function(xhr) { 
    //  xhr.setRequestHeader("My-First-Header", "first value"); 
    //  xhr.setRequestHeader("My-Second-Header", "second value"); 
    //}
}).done(function(data) { 
    alert(data);
});

当我发送此请求并观看FireBug时,看到以下标头:

选项xxxx / yyyy HTTP / 1.1
主机:127.0.0.1:6666
用户代理:Mozilla / 5.0(Windows NT 6.1; WOW64; rv:11.0)Gecko / 20100101 Firefox
/ 11.0
接受:text / html,application / xhtml + xml, application / xml; q = 0.9, / ;
q = 0.8
Accept-Language:fr,fr-fr; q = 0.8,en-us; q = 0.5,en; q = 0.3
Accept-Encoding:gzip,deflate
连接:keep -alive
来源:null
访问控制请求方法:POST
访问控制请求头:my-first-header,my-second-header
语法:no-cache
缓存控制:no-cache

为什么我的自定义标头转到Access-Control-Request-Headers

访问控制请求标头:我的第一标头,我的第二标头

我期待这样的标头值:

My-First-Header:第一个值
My-Second-Header:第二个值

可能吗?


阅读 348

收藏
2020-04-25

共1个答案

一尘不染

您在Firefox中看到的不是实际的请求;请注意,HTTP方法是OPTIONS,而不是POST。浏览器实际上是“飞行前”请求,以确定是否应允许跨域AJAX请求:

飞行前请求中的Access-Control-Request-Headers标头包括实际请求中的标头列表。然后,在浏览器提交实际请求之前,期望服务器在此上下文中报告是否支持这些标头。

2020-04-25