Angular$http.jsonp 失败
Angular $http.jsonp failing
我正在尝试从 this endpoint 获取结果。使用 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'
}
});
};
您收到此错误的原因是端点,即使您指定了 callback
参数,仍然 returns JSON 这可能意味着端点没有也支持JSONP。
这是 JSON 而不是 JSONP 内容,在这种情况下服务器需要 return。
基本上 $http.jsonp
的实现方式是它在 DOM 中注入一个 <script>
元素,其 src
属性 指向url 提供。但是由于服务器没有将 JSON 包装到回调函数 (JSONP) 中,因此无法将其作为有效脚本包含在内,因此会导致错误。
由于 CORS 和 JSONP 不是选项,您可能需要在您的域上编写一个服务器端脚本,作为您的域和远程域之间的代理。然后将 AJAX 请求发送到您的脚本。
我正在尝试从 this endpoint 获取结果。使用 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'
}
});
};
您收到此错误的原因是端点,即使您指定了 callback
参数,仍然 returns JSON 这可能意味着端点没有也支持JSONP。
这是 JSON 而不是 JSONP 内容,在这种情况下服务器需要 return。
基本上 $http.jsonp
的实现方式是它在 DOM 中注入一个 <script>
元素,其 src
属性 指向url 提供。但是由于服务器没有将 JSON 包装到回调函数 (JSONP) 中,因此无法将其作为有效脚本包含在内,因此会导致错误。
由于 CORS 和 JSONP 不是选项,您可能需要在您的域上编写一个服务器端脚本,作为您的域和远程域之间的代理。然后将 AJAX 请求发送到您的脚本。