我一直在研究这个,无法找到或理解一些解决方案,所以我希望能在这里得到一些帮助。我正在使用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.`
我已经看到其他人有这个错误,我有疑问。
如果我理解这是正确的,我会得到这个,因为服务器阻止我出于安全目的看到数据。甚至可能是浏览器(这不仅仅是一个chrome问题)问题。因此,如果我需要向Angularjs的响应头添加一个信息来停止这是如何完成的。有经验的人吗?
我是否需要联系任何人以防止服务器以这种方式响应......我对此表示怀疑,但我想我会问。我已经有了有效的api密钥。
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";
});
任何输入都会有所帮助。谢谢!
我实际上有一个圣经api工作...只是一个我不喜欢的版本,并且该网站api上没有其他版本。
答案 0 :(得分:1)
将get $ http.get调用更改为$ http.jsonp,希望它能正常工作。您正在使用跨站点脚本。有时您可以在这些情况下逃避JSONP呼叫,有时您无法做到。