Authorization Header仅在AJAX CORS请求中附加一次

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

我正在使用JQuery发送我的POST身份validation请求。 这是一个例子:

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 '); }; settings.headers = { 'Authorization': 'Bearer ' }; } return $.ajax(settings); } 

在服务器端,我可以看到第一个调用带有’Authorization’标头正确评估,而所有其他调用没有这样的Header。

我错过了什么?

谢谢

cghersi

我解决了我的问题所以我想给其他人的答案处于同样的情况。

1)问题是从服务器端启用OPTIONS http请求。 实际上,首先调用相同的url,但使用动词“OPTIONS”,然后使用POST | GET方法再次调用真实URL。 如果服务器未正确应答第一个“OPTIONS”呼叫,例如指定正确的允许标头等,则第二个呼叫不起作用。

2)符号

 settings.headers = { 'Authorization': 'Bearer ' }; 

不管用。 设置标头的唯一方法是:

 settings.beforeSend = function (request) { request.setRequestHeader('Authorization', 'Bearer '); }; 

希望这可以在将来帮助其他人。

cghersi