Вызов Alchemy API с использованием ajax-вызова

Я пытаюсь использовать ajax для вызова Alchemy REST API, но получаю сообщение об ошибке инжектора, о которой я упоминал ниже. Ниже приведен код в моем файле HTML. Ищу предложения по устранению ошибки.

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" ></meta>
<script language="JavaScript" type="text/javascript" src="http://code.jquery.com/jquery-2.1.0.min.js"></script>
</head>
<body>

Alchemy trial
<span id="yammer-login"></span>
<script>
    $.ajax({
        url: 'http://access.alchemyapi.com/calls/url/URLGetRankedKeywords',
        type: 'GET',
        data: 'url=http://yurishelke.weebly.com&apikey=apikey&maxRetrieve=1', // or $('#myform').serializeArray()
        success: function(keyword) { 
            //document.getElementById('yammer-login').innerHTML = keyword;
            console.dir(keyword);
            alert('PUT completed');  
        }

    });
</script>
</body>
</html>

Я получаю следующую ошибку в консоли: -

[21:39:07.317] Error: [$injector:unpr] http://errors.angularjs.org/undefined/$injector/unpr?p0=AngularIssuesProvider%20%3C-%20AngularIssues
L/<@https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js:6
Xb/l.$injector<@https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js:32
c@https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js:29
Xb/r.$injector<@https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js:32
c@https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js:29
d@https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js:30
Xb/f/<.instantiate@https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0

person user3866159    schedule 23.07.2014    source источник


Ответы (1)


Возможно, AlchemyAPI возвращает несколько заголовков CORS, например:

Access-Control-Allow-Origin: *
Access-Control-Allow-Origin: *

Что на самом деле интерпретируется в браузере так:

Access-Control-Allow-Origin: *, *

Что недопустимо по стандарту и неправильно интерпретируется браузером.

Кроме того, вам, вероятно, не следует напрямую обращаться к AlchemyAPI. Вместо этого вы должны использовать веб-сервер для проксирования вызовов API и обращаться к этому серверу с помощью AJAX. Отправляя вызов AJAX на сторону клиента API, вы передаете свой ключ любому человеку или устройству, которое его использует, и теперь вы дали его любому, кто просматривает этот вопрос на Stack Exchange.

person Bobby    schedule 23.07.2014