无法加载https:// ...:No' Access-Control-Allow-Origin'头

时间:2018-03-06 13:24:27

标签: javascript json api xmlhttprequest

嗨,也许你可以帮助启发我:)

我试图在纯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:   No' 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。

2 个答案:

答案 0 :(得分:0)

关于CORS https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS 这应该有所帮助 - 实际上你无法从网站上做到这一点。您的浏览器将阻止您的请求。你可以做的就是编写后端代理来完成它。

答案 1 :(得分:-1)

快速简单的答案 - 您要求的资源只能从同一来源请求,即https://forismatic.com

它适用于JSON,因为JSON的工作方式有点不同,但是为了正常的API调用工作,API服务器上的某个人必须允许您的网站来源才能对服务器进行安全调用。

您可以尝试将JSONP用于请求,看看它是否有帮助。