从本地驱动器进行API连接

时间:2018-05-29 02:57:20

标签: javascript jquery ajax cors

我正在尝试从本地驱动器访问网站API以使用他们的数据。我在MDN(https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/JSON)上关注了JSON文档并且效果很好。我可以使用下面的代码访问并获取文档中显示的相同数据。但是,当我更改为其他网站的API时,我会得到一个" Access-Control-Allow-Origin"错误。例如,如果我使用(http://quotesondesign.com/wp-json/posts)。

在线搜索后,似乎与某些服务器上的CORS设置有关。我通读了CORS文档(https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS),但仍然遇到问题。

一些搜索结果也提到了使用代理的解决方法,但我不愿意使用它,因为它似乎不实用。我也尝试过Jquery和AJAX,但在尝试打开请求时仍然遇到同样的错误。

   <script>
var header = document.querySelector('header');
var section = document.querySelector('section');
var requestURL = 'https://mdn.github.io/learning-area/javascript/oojs/json/superheroes.json';   

var request = new XMLHttpRequest();
request.open('GET', requestURL);
request.responseTYPE = 'json';
request.send();

request.onload=function() {
    var superHeroes = JSON.parse(request.response);  //Parse the files
    populateHeader (superHeroes);
    showHeroes(superHeroes);
}

...

当我说本地驱动器时,我的意思是我将html代码保存在我的C:\ document驱动器上的记事本文件中并在那里运行该文件。 有什么建议?感谢。

1 个答案:

答案 0 :(得分:1)

Web浏览器默认同意服务器CORS策略。开发人员有时会禁用安全保护来测试。请务必将其重新打开以进行正常浏览。

使用Chrome on windows,此标志启用了API以供我使用:

chrome.exe --user-data-dir="C:/Chrome dev session" --disable-web-security

这适用于特殊用途的快捷方式。

有关绕过Chrome和FireFox中的CORS的更多信息: https://pointdeveloper.com/how-to-bypass-cors-errors-on-chrome-and-firefox-for-testing/

更新:在Firefox中,禁用“strict_origin_policy”的about:config选项是有限的。为了使其正常工作,您可以尝试CORS Everywhere add-on。这在Firefox 52.8上适用于我。

CORS Everywhere screenshot

单击它后,CORS Everywhere图标将切换为绿色,这将启用CORS。