我想在Instagram上调用此链接,我正在使用以下代码,但它无效。出现以下错误,请帮助我如何从本地主机和服务器调用此URL。
var likeurl = "https://api.instagram.com/v1/media/" + idslist[1] + "/likes?ACCESS_TOKEN=" + accesstoken;
Nextin_downloadData(likeurl);
$.ajax({
url: likeurl,
type: 'POST',
data: {
},
success: function (result) {
alert("out" + result);
},
error: function () {
alert("error");
}
});
Error : XMLHttpRequest cannot load https://api.instagram.com/v1/media/714346267865083830_540073674/likes? ACCESS_TOKEN=1281148571.506af84.fc2e95e7257fdhgu5thca. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:2356' is therefore not allowed access.
答案 0 :(得分:8)
您可以使用jsonp:
在浏览器中执行此操作$.getJSON(
'https://api.instagram.com/v1/users/25025320/media/recent/?client_id=YOUR CLIENT ID&callback=?',
function(data) {
console.log(data);
}
);
注意添加callback=?
答案 1 :(得分:3)
不幸的是,这是Instagram方面的限制。因此,您应该使用服务器端查询。浏览器阻止跨域请求,因为在返回时没有Allow-origin标头。 我建议您阅读有关CORS的更多信息,以便完全理解这个问题。
例如,如果你正在使用PHP后端,这就是解决方案:
后端:
<?php
$ch = curl_init();
// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL,"https://api.instagram.com/v1/media/" . $_REQUEST['id'] ."/likes?ACCESS_TOKEN=" .$_REQUEST['token']);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'out'.$_REQUEST['data']);
// grab URL and pass it to the browser
curl_exec($ch);
// close cURL resource, and free up system resources
curl_close($ch);
前端:
$.ajax({
url: "path.to.backend.php",
type: 'POST',
data: {
id:idslist[1],
token:accesstoken,
data:{}
},
success: function (result) {
alert("out" + result);
},
error: function () {
alert("error");
}
});
答案 2 :(得分:1)
只需在请求结束时添加&callback=?
即可。
答案 3 :(得分:0)
您正在被服务器拒绝,因为您正在尝试跨域(从域A呈现的页面调用域B),并且托管此API的服务器不允许这样做。这些保护措施已经到位,以防止恶意的js代码做到这一点。
由于这是一个服务器设置,你确定这些api是要从Instagram.com外面调用的吗?