我正在尝试从本地驱动器访问网站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驱动器上的记事本文件中并在那里运行该文件。 有什么建议?感谢。
答案 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图标将切换为绿色,这将启用CORS。