Fetch CORS error with instagram api(使用 instagram api 获取 CORS 错误)
问题描述
我正在尝试从 instagram api 获取一些数据,但我不断收到以下错误:跨源请求被阻止:同源策略不允许在 https://api.instagram.com/v1/users/1652250683/media/recent/?MYTOKEN&count=20&callback=? 读取远程资源.(原因:CORS 标头Access-Control-Allow-Origin"缺失).
我还检查了 instagram 开发网站上的所有内容,所有选项似乎都很好.这是我的代码:
I'm trying to get some data from instagram api but I keep getting the following error:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://api.instagram.com/v1/users/1652250683/media/recent/?MYTOKEN&count=20&callback=?. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
Also I checked everything on instagram dev site and all options seem fine.
This is my code:
fetch('https://api.instagram.com/v1/users/1652250683/media/recent/?MYTOKEN&count=20&callback=', {
mode: 'cors'
})
.then(response => response.json())
.then(function(data) {
const response = data;
const images = response['data'].map(img => {
return [img.images.standard_resolution.url]
})
const topImgs = images.slice(0, 7);
const leftImgs = images.slice(7, 10);
const rightImgs = images.slice(10, 13);
const bottomImgs = images.slice(13, 20);
let topDivs = document.querySelector('.top').children;
let leftDivs = document.querySelector('.left').children;
let rightDivs = document.querySelector('.right').children;
let bottomDivs = document.querySelector('.bottom').children;
function* enumerate(iterable) {
let i = 0;
for (const x of iterable) {
yield [i, x];
i++;
}
}
for (const [i, div] of enumerate(topDivs)) {
div.innerHTML = `<img src="${topImgs[i]}">`
}
for (const [i, div] of enumerate(leftDivs)) {
div.innerHTML = `<img src="${leftImgs[i]}">`
}
for (const [i, div] of enumerate(rightDivs)) {
div.innerHTML = `<img src="${rightImgs[i]}">`
}
for (const [i, div] of enumerate(bottomDivs)) {
div.innerHTML = `<img src="${bottomImgs[i]}">`
}
})
.catch(function(error) {
// If there is any error you will catch them here
console.log(error);
});
如您所见,我只想让图像非常简单.在本地,我正在使用适用于 chrome 的 CORS 插件,它工作正常,但在服务器上却不行.有谁知道可能是什么问题以及如何解决它?
As you can see I only want to get images pretty straightforward.Locally I'm using CORS plugin for chrome and it works fine but on server it does not. Does anyone have any idea what might be the problem and how to solve it ?
推荐答案
所以,为了解决这个问题,你们有几个可能性.其中之一是使用支持 JSONP 的 JQ.
您的代码将如下所示:
So guys in order to solve this one you have a few possibilities. One of these is using JQ which has support for JSONP.
Your code would look something like this:
var token = 'your token',
numPhotos = 20
$.ajax({
url: 'https://api.instagram.com/v1/users/self/media/recent/',
dataType: 'jsonp',
type: 'GET',
data: {access_token: token, count: numPhotos},
success: function(data){
console.log(data);
// Do something
},
error: function(data){
console.log(data);
}
});
您可以阅读此处了解更多关于 Instagram 对照片数量的限制.
You can read here more about instagram limitations on number of photos.
还有使用纯 JS 获取数据的方法.
从他们的文档中:如果您正在编写 AJAX 应用程序,并且想用回调包装我们的响应,那么您只需do 是为任何 API 调用指定一个回调参数.
Also there is way to get data with pure JS.
From their docs:If you're writing an AJAX application, and you'd like to wrap our response with a callback, all you have to do is specify a callback parameter with any API call.
考虑到这一点,您可以执行以下操作:
With that in mind you can do something like this:
var token = 'your token',
numPhotos = 20,
scrElement = document.createElement( 'script' );
window.instaFunction = function( data ) {
console.log(data);
// Do something
}
scrElement.setAttribute( 'src', 'https://api.instagram.com/v1/users/self/media/recent?access_token=' + token + '&count=' + numPhotos + '&callback=instaFunction' );
document.body.appendChild( scrElement );
这篇关于使用 instagram api 获取 CORS 错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:使用 instagram api 获取 CORS 错误
基础教程推荐
- 如何使用JIT在顺风css中使用布局变体? 2022-01-01
- 如何使用TypeScrip将固定承诺数组中的项设置为可选 2022-01-01
- 直接将值设置为滑块 2022-01-01
- Electron 将 Node.js 和 Chromium 上下文结合起来意味着 2022-01-01
- 我可以在浏览器中与Babel一起使用ES模块,而不捆绑我的代码吗? 2022-01-01
- 自定义 XMLHttpRequest.prototype.open 2022-01-01
- html表格如何通过更改悬停边框来突出显示列? 2022-01-01
- 用于 Twitter 小部件宽度的 HTML/CSS 2022-01-01
- Vue 3 – <过渡>渲染不能动画的非元素根节点 2022-01-01
- Chart.js 在线性图表上拖动点 2022-01-01