通过angular和bible.org api或esvapi.org返回JSON

时间:2015-09-08 06:23:26

标签: json angularjs api asp.net-web-api

我一直在研究这个,无法找到或理解一些解决方案,所以我希望能在这里得到一些帮助。我正在使用Asp.net并构建一个需要使用圣经api的应用程序。我喜欢问题中列出的两个。每次我调用esvapi它都会成功返回,但我无法查看数据。我在控制台中收到错误。

XMLHttpRequest cannot load http://www.esvapi.org/v2/rest`/passageQuery?key=8834092f0c58fcda&passage=James2. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:59324' is therefore not allowed access.`

我已经看到其他人有这个错误,我有疑问。

  1. 如果我理解这是正确的,我会得到这个,因为服务器阻止我出于安全目的看到数据。甚至可能是浏览器(这不仅仅是一个chrome问题)问题。因此,如果我需要向Angularjs的响应头添加一个信息来停止这是如何完成的。有经验的人吗?

  2. 我是否需要联系任何人以防止服务器以这种方式响应......我对此表示怀疑,但我想我会问。我已经有了有效的api密钥。

  3. bible.org网站api密钥难以申请我的代码。在esvapi上我只需添加一个带键的标题:" keypass"我只有CORS问题。但是使用bible.org,我无法弄清楚如何实现api密钥和密码。见下文...我说令牌:键:用户名。如果我把api放在浏览器中,我会弹出一个添加用户名和密码的弹出窗口。用户名是我的密钥,密码被忽略。我尝试输入用户名作为密钥,但这并没有削减它。无论我需要修复CORS问题并将信息添加到响应标头以查看响应数据。

    $scope.search = function() {
        return $http.get("http://www.esvapi.org/v2/rest/passageQuery?&passage=" + $scope.bo + $scope.chap, {
            headers: {
                "key?token?orusername?": "",
                ///thought i saw someone do this...don't know if this is right
                "Access-Control-Expose-Headers": "Content-Disposition",
            }
        }).success(function (data, status, headers, config) {
            $scope.book = data.Book;
            $scope.chapter = data.Chapter;
            $scope.output = data.Output;
        }).error(function (data, status, headers, config) {
            $scope.message = "Oops... something went wrong";
    
        });
    
  4. 任何输入都会有所帮助。谢谢!

    我实际上有一个圣经api工作...只是一个我不喜欢的版本,并且该网站api上没有其他版本。

1 个答案:

答案 0 :(得分:1)

将get $ http.get调用更改为$ http.jsonp,希望它能正常工作。您正在使用跨站点脚本。有时您可以在这些情况下逃避JSONP呼叫,有时您无法做到。