Javascript $http.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

我正试图从你那里得到结果。使用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 ('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)执行对任何域的任何请求。