使用JavaScript fetch()获取md文件时出现问题

3
我目前正在开发一个网络应用程序,其中大部分内容都是用Markdown编写的。因此,为了处理这个问题,我想创建一个GitHub存储库来托管所有Markdown文件,然后使用fetch() API从GitHub获取这些文件。
我的代码如下:
fetch('https://github.com/erasabi/trekthroughs/blob/master/pen_testing/RickdiculouslyEasy.md')
    .then(response => response.blob())
    .then(result => console.log(result));

当我这样做时,我遇到了以下错误:

无法加载https://github.com/erasabi/trekthroughs/blob/master/pen_testing/RickdiculouslyEasy.md:请求的资源未包含“Access-Control-Allow-Origin”标头。因此,不允许使用来源为“null”的访问。如果不透明响应满足您的需求,请将请求模式设置为“no-cors”以禁用CORS获取资源。

有没有什么办法解决这个问题?最终目标是,一旦获取了markdown文件的内容,我想使用showdown或markedjs将其转换为html以在网站上使用。


可能想要查看这个链接:https://developer.github.com/v3/repos/contents/#get-contents - Evan Trimboli
你需要一个代理来为你发起调用,否则浏览器不会让你调用不同的站点,除非它们通过 CORS 进行了授权。请访问 https://cors-anywhere.herokuapp.com 获取一个在线代理,但你可能想使用自己的代理。 - Ruan Mendes
@EvanTrimboli 我看了那个链接并找到了内容。但是你知道是否有任何方法可以获取原始数据吗? - Scott
1个回答

7
基本上,你需要像这样做:

弄清楚了,你需要做类似于这样的事情:

fetch('https://raw.githubusercontent.com/erasabi/trekthroughs/master/pen_testing/RickdiculouslyEasy.md') 
    .then(response => response.text())
    .then(result => document.getElementById('content').innerHTML = marked(result));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接