【问题标题】:I can not access in to a server with angularJs ($ http)我无法使用 angularJs ($ http) 访问服务器
【发布时间】:2015-06-13 20:48:15
【问题描述】:

通过 AngularJs 试图访问服务器以使我以这种方式返回 JSON

modulo.controller('listaController', function($scope, $http) {
    $http.get('http://api.rottentomatoes.com/api/public/v1.0/movies.json?[apyKeyBlaBla]&q=Toy+Story+3&page_limit=1').success(function(data) {
        $scope.items = data;
    });
});

但是当您启动应用程序时,我收到此错误:

XMLHttpRequest 无法加载 [Name Sting] 请求中不存在“Access-Control-Allow-Origin”标头 资源。因此不允许使用原点“http://localhost:8383” 访问。

解决方案在哪里? 通知我使用 netbeans 并将我的 apyKey 放在上面的字符串中,然后字符串是正确的,因为我测试了它!

【问题讨论】:

标签: javascript angularjs angularjs-directive cors angular-ui-router


【解决方案1】:

“您正在向与您的页面所在的域不同的域执行 XMLHttpRequest。因此浏览器会阻止它,因为出于安全原因,它通常允许来自同一来源的请求。当您想要做的时候,您需要做一些不同的事情跨域请求。”通过@MD。萨希布·本·马布布

我建议你阅读这个问题/答案:

"No 'Access-Control-Allow-Origin' header is present on the requested resource"

【讨论】:

  • 我必须写什么代码?这样我就看不懂了!我理解这个问题,但我不明白如何解决它......
  • rottentomatoes api服务是否开启了JSONP?
【解决方案2】:

引发此错误是因为浏览器不允许从一个主机 (localhost) 向另一台主机 (rottentomatoes.com) 发出 AJAX 请求,除非后者允许。这被称为CORS

实现此目的的唯一方法是在 AJAX 代码和 rottentomatoes.com 之间使用网关。即向您编写的后端应用程序发出 AJAX 请求,然后让后者向 rottentomatoes.com 发出实际请求,将结果返回给您的客户端应用程序。

【讨论】:

  • 我必须写什么代码?这种方式我看不懂!
【解决方案3】:

你应该这样做:

$http.jsonp('http://api.rottentomatoes.com/api/public/v1.0/movies.json?[apyKeyBlaBla]&q=Toy+Story+3&page_limit=1&callback=JSON_CALLBACK').success(function(data) {
    $scope.items = data;
});

重要的是在请求 url 中有 callback=JSON_CALLBACK

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-21
    • 1970-01-01
    • 1970-01-01
    • 2016-09-20
    • 1970-01-01
    • 2018-10-14
    • 2017-03-20
    • 2015-01-15
    相关资源
    最近更新 更多