2016-10-22 13 views
1

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設定で何か変更されましたか?

答えて

-1

サーバを再起動した後に問題が解決したので、私は自分のケースがTFSとは関係のない孤立した状況であったと推測します。

requestパッケージを使用してリクエストを送信するとうまくいくようです。

しかし、jqueryを使用してブラウザでテストするのはまだ失敗します。しかし、

eXVuaWQuYmZGV12lpmaW5lZA== //wrong 
eXVuaWQuYmZGVsbEAxMw==  //correct 

ないアイデア理由:私は

var username = "my_username", 
    password = "my_password"; 
btoa(my_username + ":" + my_password); //generates wrong encoded string 

は異なるエンコードされた文字列を生成し、単に

btoa("my_username:my_password") //generates right encoded string 

正しいものはいくつかの文字短くなり、これは一例であることに気づきました。

関連する問題