Ajax AngularJS$http请求到Coursera';s的RESTAPI。跨源拒绝,尽管不需要公钥

Ajax AngularJS$http请求到Coursera';s的RESTAPI。跨源拒绝,尽管不需要公钥,ajax,rest,cors,angular-http,coursera-api,Ajax,Rest,Cors,Angular Http,Coursera Api,Coursera API文档: 我尝试对api进行一个简单的GET调用: 像这样: $scope.courseraSearch = function(query){ var courseraAPIUrl = 'https://api.coursera.org/api/courses.v1?q=search&query=Machine+Learning'; $http({ method: 'GET', url: courseraAPIU

Coursera API文档:

我尝试对api进行一个简单的GET调用:

像这样:

$scope.courseraSearch = function(query){


    var courseraAPIUrl = 'https://api.coursera.org/api/courses.v1?q=search&query=Machine+Learning';

    $http({
      method: 'GET',
      url: courseraAPIUrl
    }).then(function successCallback(response) {
      console.log(response);
      for(i in response.data.elements){
        $scope.courseraResults.push(response.data.elements[i]);
      }
    }, function errorCallback(response) {
    });
  }
但我总是收到CORS错误或“拒绝从“*”执行脚本,因为它的MIME类型('application/json')不可执行,并且启用了严格的MIME类型检查。”错误

我尝试使用cors.io作为代理:

$scope.courseraSearch = function(query){

    //https://api.coursera.org/api/courses.v1?q=search&query=Calculus
    var courseraAPIUrl = 'http://cors.io/?u=https://api.coursera.org/api/courses.v1?q=search&query=Machine+Learning';

    $http({
      method: 'GET',
      url: courseraAPIUrl
    }).then(function successCallback(response) {
      console.log(response);
      for(i in response.data.elements){
        $scope.courseraResults.push(response.data.elements[i]);
      }
    }, function errorCallback(response) {
    });
  }
但这样做,我似乎无法传递任何参数(当我传递“机器学习”查询时,它会返回正常查询,就好像我没有输入任何搜索词一样)


我也尝试过jsonp…

使用
cors.io
,您可能应该确保参数编码正确。最简单的方法是使用
params
httpconfig属性

$http.get('http://cors.io/', {
    params: {
        u: 'https://api.coursera.org/api/courses.v1?q=search&query=Machine+Learning'
    }
})

Coursera是否提供JSONP选项?如果没有,你为什么还要费心去尝试呢?谢谢,这很有效。可以解释“u”参数的作用吗?@Sam.E这是
u
中的查询参数http://cors.io/?u=...。URL参数必须是,这是Angular在构造请求时对
params
对象所做的。