TFS 2015 Update 3では、問題なくすべてが機能していました。私は、npmパッケージrequestを使用してすべてのapisを問題なく使用していました。また、常に正しく完了します jqueryのを使用すると、次の呼び出し:TFSへのAjaxの呼び出し15 Rest Abiがアップグレード後に動作を停止しました
//this used to work in 2015 Update 3
var request = {
url: "https://my_server/tfs/DefaultCollection/_apis/projects?api-version=2.0",
type:'GET',
contentType: "application/json",
accepts: "application/json",
dataType: 'json',
data: JSON.stringify(data),
beforeSend: function (xhr) {
xhr.setRequestHeader("Authorization", "Basic " + btoa("my_username:my_password"));
}
};
$.ajax(request);
をTFS 15 RC2に上記のメカニズムをアップグレードした後はもう機能していません。サーバーは常に401 - Unauthorizedエラーを返します。
テストカールを経由して同じ呼び出し、すべてがうまくいった:私は、ヘッダーに資格情報を送信しようとしたとき
//this works well
curl -u my_username:my_password https://my_server/tfs/DefaultCollectiopis/projects?api-version=2.0
しかし、再び失敗しました、このような何か:
//this will fail
curl https://my_server/tfs/DefaultCollection/_apis/projects?api-version=2.0 \
-H "Accept: application/json" \
-H "Authorization: Basic eNjPllEmF1emEuYmFuNppOUlOnVuZGVmaW5lZA=="
同じ
401 - 不正なエラー。
私はそれがTFS 15 RC2に含まれているので、私の個人的なアクセストークンを設定し、here
$(document).ready(function() {
$.ajax({
url: 'https://my_server/defaultcollection/_apis/projects?api-version=2.0',
dataType: 'json',
headers: {
'Authorization': 'Basic ' + btoa("" + ":" + myPatToken)
}
}).done(function(results) {
console.log(results.value[0].id + " " + results.value[0].name);
});
});
示され、それも失敗したように、テストを実行しようとしました。しかし、私の実際のパスワードをmyPatTokenを交換し、同様に自分のユーザー名を通過した後、その要求が正常に完了:一言で言えば
//everything works correctly with the headers like this
headers: {
'Authorization': 'Basic ' + btoa("my_username:my_password")
}
は、何かが間違って起こっている私は、セットアップこの(使用してjQueryの)のようなヘッダを:
//this fails
beforeSend: function (xhr) {
xhr.setRequestHeader("Authorization", "Basic " + btoa("my_username:my_password"));
}
request(これは私が使用しているパッケージです)は、おそらくbeforeSendプロパティなどを使用していて、失敗している可能性があります。
//this used to work with 2015 Update 3, not anymore after upgrading to 15 RC2
var options = {
url: 'https://my_server/defaultcollection/_apis/projects?api-version=2.0',
method:'GET',
headers: {
'Authorization': "Basic " + btoa("my_username:my_password")
},
json: data
};
request(options, (error, response, body) => {
if (!error && response.statusCode == 200) {
console.log(response);
} else {
console.log(error);
}
});
IISの設定ではおそらく何かだと思いますが、基本認証は正しく設定されています。パッケージ要求を使用してこれを動作させる方法はありますか? アップグレード後にIIS設定で何か変更されましたか?