2014-12-05 88 views
4

我正在向Bing搜索API發送ajax請求。當我將它放入瀏覽器時,我用於請求的URL有效。隨着阿賈克斯我得到一個401錯誤"The authorization type you provided is not supported. Only Basic and OAuth are supported"Bing API請求的Ajax授權標頭是什麼?

因此我的頭是錯誤的。它在瀏覽器中工作,因爲我手動輸入了我的天藍色帳戶密鑰。

<script> 
     $scope.bingsearch = function() { 

      var azurekey = '....vjrQiHPp4ct1meqroX2pzQZhPvE'; 
      var keywords = $scope.inputvalue; 
      var myurl = 'https://api.datamarket.azure.com/Bing/Search/v1/Composite? 
        Sources=%27web%27&$format=json&Query=%27'+ keywords + '%27'; 

      $http({ 
       method: 'POST', 
       url: myurl, 
       headers:{ 
        'Authorization': 'Basic ' + azurekey 
       } 
      }).success(function(data){ 
       var searchresults = angular.fromJson(+data); 
       $scope.searchresult = searchresults; 
      }) 
     }; 
</script> 

URL https://api.datamarket.azure.com/Bing/Search/v1/Composite?Sources=%27web%27&$format=json&Query=%27van%20gogh%27適用於瀏覽器。

如何設置我的標題以便它能接受我的帳戶密鑰?

回答

14

我想通了。我不得不在Base64中對我的Azure鍵進行編碼,這些標題以冒號前綴我去了this website 並粘貼了一個冒號「:」加上我的Azure賬號密鑰和base64'd它。

所以我的重點OQA/cs成爲:OQA/cs然後base64'd到Ok9RQS9jcw==和最終的頭看起來像

   `headers: { 
        'Authorization': 'Basic Ok9RQS9jcw==' 
       }` 

和Bing返回我想要的JSON。在編碼之前,不要忘記將冒號作爲的第一個字符包含在您的帳戶密鑰以便Base64將其編碼爲您的密鑰的一部分。

相關問題