Javascript $http.jsonp失败
我正试图从你那里得到结果。使用GET我得到CORS错误,所以我尝试jsonp 结果是Javascript $http.jsonp失败,javascript,angularjs,jsonp,angular-http,Javascript,Angularjs,Jsonp,Angular Http,我正试图从你那里得到结果。使用GET我得到CORS错误,所以我尝试jsonp 结果是 Refused to execute script from 'https://api.airbnb.com/v2/listings/16218947?client_id=3092nxybyb0otqw18e8nh5nty&_format=v1_legacy_for_p3&callback=angular.callbacks._0' because its MIME type ('applic
Refused to execute script from 'https://api.airbnb.com/v2/listings/16218947?client_id=3092nxybyb0otqw18e8nh5nty&_format=v1_legacy_for_p3&callback=angular.callbacks._0'
because its MIME type ('application/json') is not executable,
and strict MIME type checking is enabled.
我的代码是
var API_BASE_URL = 'https://api.airbnb.com/v2/';
function getListing(id) {
var url = API_BASE_URL + 'listings/' + id + '?client_id=3092nxybyb0otqw18e8nh5nty&_format=v1_legacy_for_p3';
var trusted = $sce.trustAsResourceUrl(url);
return $http.jsonp(trusted, {
jsonpCallbackParam: 'callback',
headers: {
'Accept': 'application/javascript'
}
});
};
出现此错误的原因是,即使您指定了
回调
参数,端点仍然返回JSON,这可能意味着端点也不支持JSONP
请看这里:
这是JSON,而不是JSONP内容,在本例中,这是服务器需要返回的内容
基本上,$http.jsonp
的实现方式是在DOM中注入一个
元素,其src
属性指向提供的url。但由于服务器没有将JSON封装到回调函数(JSONP)中,因此不能将其作为有效脚本包含,从而导致错误
由于CORS和JSONP不是选项,您可能需要在域上编写一个服务器端脚本,作为域和远程域之间的代理。然后将AJAX请求发送到您的脚本。如果我通过我的域发送请求,会不会出现CORS错误?不会,当然不会。CORS只是沙盒浏览器中存在的一个概念,是对javascript的限制。在服务器上,您可以使用服务器端语言(如PHP)执行对任何域的任何请求。