だから...私はクロスドメイン(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-Oign にはクロスドメイン URL が追加されています。Access-Control-Allow-Headers には Authorization が追加されています。xhr.status は 0 を返し、responseText/thrownError は空白です。