使用JavaScript fetch()获取GitHub托管Markdown文件失败求助
解决GitHub Markdown文件fetch请求失败的问题
你直接请求GitHub仓库的文件预览页面肯定会出问题的——那个URL返回的是GitHub渲染后的网页HTML,不是你要的原始Markdown内容,而且还会因为内容格式不匹配或者跨域规则导致fetch报错。
给你两个关键修正点:
- 改用GitHub原始文件地址:把URL里的
blob/master替换成raw/master,这样就能直接获取到文件的原始内容了。比如你的地址要改成:https://github.com/erasabi/trekthroughs/raw/master/pen_testing/RickdiculouslyEasy.md - 获取文本而非Blob:Markdown是纯文本格式,直接用
response.text()获取比blob()更合适,也方便后续处理。
修改后的代码应该是这样的:
fetch('https://github.com/erasabi/trekthroughs/raw/master/pen_testing/RickdiculouslyEasy.md') .then(response => { // 先检查请求是否成功 if (!response.ok) { throw new Error(`请求失败,状态码:${response.status}`); } return response.text(); }) .then(markdownContent => { console.log('拿到的Markdown内容:', markdownContent); // 这里可以把内容渲染到页面,比如用marked.js这类库转成HTML }) .catch(error => { console.error('获取文件时出错:', error); });
简单说下原理:GitHub的blob路径是给用户看的网页,里面包含了导航、代码高亮等元素;而raw路径专门用来返回文件的原始二进制/文本内容,完全符合你获取Markdown文件的需求。
内容的提问来源于stack exchange,提问作者Scott
相关产品推荐
相关产品推荐

