使用Fetch API报错URL scheme 'file' is not supported如何解决
错误原因
这是浏览器默认安全策略导致的:当你直接双击打开本地HTML文件时,页面是通过file协议加载的,为了避免恶意网页随意读取用户本地磁盘的文件数据,浏览器默认禁止Fetch API向file协议的地址发起请求,就出现了你看到的报错。
可行解决方法
方法1:启动本地HTTP服务访问(最推荐,日常开发通用方案)
只要把项目放在本地HTTP服务下访问,就可以完全规避协议限制:
- 如果你安装了Python,直接在项目根文件夹打开终端,执行对应命令启动服务:
- Python 2版本:
python -m SimpleHTTPServer 8000 - Python 3版本:
python -m http.server 8000
启动后在浏览器地址栏输入http://localhost:8000访问页面即可,fetch请求可以正常读取到同目录的hi.txt文件。
- Python 2版本:
- 如果你用VS Code编辑器,可以直接安装「Live Server」插件,右键HTML文件选择「Open with Live Server」,就能一键启动本地服务自动打开页面,不需要手动敲命令。
方法2:修改浏览器启动参数(仅临时测试使用,不推荐长期开启)
如果只是临时测试不想搭服务,可以给浏览器加启动参数绕过限制:
- 关闭所有已打开的Chrome窗口
- 右键Chrome的桌面快捷方式,选择「属性」
- 在「目标」输入框的内容末尾,加一个空格后输入
--allow-file-access-from-files,保存修改 - 用这个修改后的快捷方式打开Chrome,再打开本地HTML文件就能正常执行fetch请求了。
这个方案会降低浏览器的本地安全防护,只适合临时测试用,测试完建议改回原启动参数。
方法3:主动读取本地文件(适合纯本地工具类场景)
如果你的页面就是要做纯本地运行的小工具,可以不用fetch,改成用文件选择控件让用户主动选择hi.txt文件读取,不需要服务也能运行。
内容的提问来源于stack exchange,提问作者UiJin
相关产品推荐
相关产品推荐

