这个问题在这里已有答案:
嗨也许你可以帮助赐教:)
我试图在纯Javascript(没有jQuery)中制作一个简单的Quote Generator应用程序,我试图加载以下api
https://api.forismatic.com/api/1.0/?method=getQuote&format=json&lang=en
但是我一直收到以下错误,无论是在本地主机上还是我将其上传到主机:
无法加载https://api.forismatic.com/api/1.0/?method=getQuote&format=json&lang=en:请求的资源上没有“Access-Control-Allow-Origin”标头。因此,'http://127.0.0.1:50969'原产地不允许进入。
我使用的代码如下:
// JavaScript Document
var xhr = new XMLHttpRequest();
xhr.open('GET',"https://api.forismatic.com/api/1.0/?method=getQuote&format=json&lang=en",true);
xhr.responseType = 'text';
xhr.send();
xhr.onload = function() {
if(xhr.status === 200) {
var myStuff = JSON.parse(xhr.responseText);
console.log(myStuff);
}
}
如果我在最后使用带有.json的API网址,例如:
http://api.wunderground.com/api/3a9c68e56dd0e1fb/conditions/q/90210.json
它工作正常,但如果我使用没有.json的任何东西,它会给我这个错误。
我整天搜索,无法找到解决方案,我真的不想使用jQuery。
这是关于CORS https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS这应该有帮助 - 实际上你无法从网站上做到这一点。您的浏览器将阻止您的请求。你可以做的就是编写后端代理来完成它。
快速简单的答案 - 您正在请求一个仅应从同一来源请求的资源,这意味着来自https://forismatic.com
它适用于JSON,因为JSON以不同的方式工作,但是为了正常的API调用工作,API服务器上的某个人必须允许您的网站来源,以便能够对服务器进行安全调用。
您可以尝试将JSONP用于请求,看看它是否有帮助。