AngularJS $http 请求到 Coursera 的 REST API。尽管不需要 public 密钥,但跨域被拒绝
AngularJS $http request to Coursera's REST API. Cross-origin denied although public key is not required
Coursera API 文档:
https://tech.coursera.org/app-platform/catalog/
我尝试对 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 错误或 "Refused to execute script from '*' because its MIME type ('application/json') is not executable, and strict MIME type checking is enabled." 错误。
我尝试使用 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) {
});
}
但是这样做,我似乎无法传入任何参数(当我传入 "Machine Learning" 查询时,它 returns 正常查询,就好像我没有输入任何搜索词一样)
我也已经尝试过 jsonp...
使用cors.io
,您可能应该确保参数编码正确。最简单的方法是使用 params
HTTP 配置 属性
$http.get('http://cors.io/', {
params: {
u: 'https://api.coursera.org/api/courses.v1?q=search&query=Machine+Learning'
}
})
Coursera API 文档: https://tech.coursera.org/app-platform/catalog/
我尝试对 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 错误或 "Refused to execute script from '*' because its MIME type ('application/json') is not executable, and strict MIME type checking is enabled." 错误。
我尝试使用 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) {
});
}
但是这样做,我似乎无法传入任何参数(当我传入 "Machine Learning" 查询时,它 returns 正常查询,就好像我没有输入任何搜索词一样)
我也已经尝试过 jsonp...
使用cors.io
,您可能应该确保参数编码正确。最简单的方法是使用 params
HTTP 配置 属性
$http.get('http://cors.io/', {
params: {
u: 'https://api.coursera.org/api/courses.v1?q=search&query=Machine+Learning'
}
})