Javascript 授权头在AJAX CORS请求中只追加一次

Javascript 授权头在AJAX CORS请求中只追加一次,javascript,jquery,ajax,cors,Javascript,Jquery,Ajax,Cors,我在CORS场景中从Javascript调用RESTful API 我正在使用JQuery发送经过身份验证的请求。 以下是一个例子: function post(settings, addAccessToken) { settings.type = 'POST'; settings.cache = false; if (settings.dataType === undefined) settings.dataType =

我在CORS场景中从Javascript调用RESTful API

我正在使用JQuery发送经过身份验证的请求。 以下是一个例子:

function post(settings, addAccessToken) {
        settings.type = 'POST';
        settings.cache = false;
        if (settings.dataType === undefined)
            settings.dataType = 'json';
        if (addAccessToken) {
            settings.xhrFields = { withCredentials: true };
            settings.beforeSend = function (request) {
                request.setRequestHeader('Authorization', 'Bearer <my access token>');
            };
            settings.headers = {
                'Authorization': 'Bearer <my access token>'
            };
        }
        return $.ajax(settings);
    }
函数post(设置,addAccessToken){
settings.type='POST';
settings.cache=false;
if(settings.dataType==未定义)
settings.dataType='json';
if(addAccessToken){
settings.xhrFields={withCredentials:true};
settings.beforeSend=函数(请求){
setRequestHeader('Authorization','Bearer');
};
settings.headers={
“授权”:“持票人”
};
}
返回$.ajax(设置);
}
在服务器端,我可以看到第一个调用带有正确值的“Authorization”头,而其他所有调用都没有这样的头

我错过了什么

多谢各位


cghersi

我解决了我的问题,所以我想向其他处于相同情况的人给出答案

1) 问题是从服务器端启用选项http请求。事实上,第一次调用同一个url,但使用动词“OPTIONS”,然后使用POST | GET方法第二次调用真实url。如果服务器没有正确响应第一个“选项”调用,例如指定正确的允许标头等,则第二个调用将不起作用

2) 符号

settings.headers = {
 'Authorization': 'Bearer <my access token>'
};
settings.headers={
“授权”:“持票人”
};
它不起作用。设置标题的唯一方法是:

settings.beforeSend = function (request) {
 request.setRequestHeader('Authorization', 'Bearer <my access token>');
};
settings.beforeSend=函数(请求){
setRequestHeader('Authorization','Bearer');
};
希望这可以帮助其他人在未来

格赫西