Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What are the Ajax authorization headers for a Bing API request?

I'm sending an ajax request to the Bing Search API. The URL I am using for the request works when I put it in the browser. With ajax I get a 401 error "The authorization type you provided is not supported. Only Basic and OAuth are supported"

therefore my header is wrong. It works in the browser because I manually type in my azure account key.

<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>

The URL https://api.datamarket.azure.com/Bing/Search/v1/Composite?Sources=%27web%27&$format=json&Query=%27van%20gogh%27 works in the browser.

How do I set my header so that it will accept my account key?

like image 627
ian-campbell Avatar asked Dec 08 '22 05:12

ian-campbell


1 Answers

I figured it out. I had to Base64 encode my Azure key in the headers, prefixed by a colon. I went to this website and pasted a colon ":" plus my Azure account key and base64'd it.

So my key OQA/cs becomes :OQA/cs then base64'd into Ok9RQS9jcw== and the final header looks like

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

and Bing returns the json I want. Do not forget to include the colon as the first character of your account key before you encode it so that you Base64 encode it as part of your key.

like image 115
ian-campbell Avatar answered Dec 13 '22 21:12

ian-campbell