所以...我正在进行跨域 (CORS) 调用。当我最初在页面上创建它时,它工作得很好(注意跨域问题并不是真正的问题),但是当我稍后向同一服务器发出另一个请求时,将不记名授权令牌添加到标题中,它是401 Unauthorized 失败。
此外,当我从同一个域运行此代码时,两个调用都成功运行(确定令牌正常......)
想法?
$.ajax({
url: apiPath.userMetaUrl(),
xhrFields: {
withCredentials: true
},
cache: false,
error: function (xhr, ajaxOptions, thrownError) {
console.log("url: " + apiPath.userMetaUrl());
console.log("fn loadUserMetaData xhr.status: " + xhr.status);
console.log("fn loadUserMetaData xhr.responseText: " + xhr.responseText);
console.log("fn loadUserMetaData thrownError: " + thrownError);
},
dataType: "json",
jsonpCallback: "callback",
beforeSend : setHeader,
success: function (data) {
//woohoo!
}
}
function setHeader(xhr) {
xhr.setRequestHeader('Authorization', 'Bearer ' + authenticatedInfo.access_token);
}
同样,从与 apiPath.userMetaURL() 相同的域运行此代码可以正常工作。在不同的域上,不添加请求标头的初始调用工作正常。Access-Control-Allow-Orign 添加了跨域 URL。Access-Control-Allow-Headers 添加了授权。xhr.status 返回 0 并且 responseText/thrownError 为空白。