В TFS 2015 Update 3 все работало без проблем. Я использовал все apis, используя пакет npm request без проблем. Использование JQuery следующий вызов также будет всегда правильно заполнить:Ajax вызывает TFS 15 Rest Api перестала работать после обновления
//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 после обновления?