我正在尝试从我的tumblr博客上发帖子并将它们放在一个单独的网站页面上。为此,我在他们的OAuth页面上注册了一个应用程序,但是当我尝试实际请求授权时,我遇到了一些问题。我的控制台吐出了这条消息 -
XMLHttpRequest cannot load https://api.tumblr.com/v2/blog/myblog.tumblr.com/posts?api_key=(MY_KEY).
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://127.0.0.1:63342' is therefore not allowed access.
(由于显而易见的原因,我在这里省略了键值。)
现在,我的网站实际上还没有,我有一个运行在localhost:63342
的测试服务器,但在他们的OAuth应用设置页面上,我有这些选项,我必须填写 -
有没有办法让我的本地测试服务器工作?这是我要求访问的代码。
var request = new XMLHttpRequest();
request.open('GET', 'https://api.tumblr.com/v2/blog/myblog.tumblr.com/posts?api_key=(API_KEY)', true);
request.onload = function() {
if (request.status >= 200 && request.status < 400) {
// Success!
var data = JSON.parse(request.responseText);
console.log(data);
} else {
// We reached our target server, but it returned an error
console.log('server error');
}
};
request.onerror = function() {
// There was a connection error of some sort
console.log("ERROR!!!");
};
request.send();
任何帮助将不胜感激!的谢谢!
答案 0 :(得分:2)
结果我的问题是使用JSON而不是JSONP,它绕过了Access-Control-Allow-Origin
问题。我为Javascript下载了这个JSONP库(我在我的项目中没有使用JQuery )并且能够通过编写这个来访问api:
JSONP('https://api.tumblr.com/v2/blog/myblog.tumblr.com/posts?api_key=(API_KEY)'
, function(data) {
console.log(data);
});
返回一个JSON对象,然后我可以使用类似data.response
或数组中的任何对象的数据进行数据。
同样,我的问题不是Tumblr没有授权我的测试服务器。我能够使用127.0.0.1:port
作为我的应用程序网站&amp;回调网址。