无法加载https:// ...:没有'Access-Control-Allow-Origin'标题[重复]

问题描述 投票:0回答:2

这个问题在这里已有答案:

嗨也许你可以帮助赐教:)

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

javascript json api xmlhttprequest
2个回答
0
投票

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


-1
投票

快速简单的答案 - 您正在请求一个仅应从同一来源请求的资源,这意味着来自https://forismatic.com

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

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

© www.soinside.com 2019 - 2024. All rights reserved.