1

我正在尝试使用 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
4

1 回答 1

2

可能是 AlchemyAPI 返回多个 CORS 标头,如下所示:

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

实际上在浏览器中是这样解释的:

Access-Control-Allow-Origin: *, *

根据标准,这是无效的,并且被浏览器不正确地解释。

除此之外,您可能不应该直接使用 AlchemyAPI。相反,您应该使用 Web 服务器来代理 API 调用,并使用 AJAX 访问该服务器。通过将 AJAX 调用放到 API 客户端,您将密钥分发给使用它的任何人或设备,而现在,您已将其提供给在 Stack Exchange 上查看此问题的任何人。

于 2014-07-23T16:21:17.547 回答