You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用JavaScript读取本地JSON文件遇异常:请求被取消、status为0

排查Chrome中本地XHR读取JSON文件返回status 0且请求canceled的问题

咱们一步步来拆解这个问题,本地文件的XHR请求在Chrome里经常会碰到这类权限或会话相关的坑,我给你梳理几个关键排查点:

1. 先确认Chrome启动参数是否真的生效

这是最容易被忽略的点!很多人启动带参数的Chrome时,没彻底关闭所有已打开的Chrome窗口/进程,导致新启动的窗口直接继承了原来的会话,加的特殊参数根本没起作用。

  • 操作步骤:先打开任务管理器,把所有chrome.exe进程全部结束干净,然后再运行你的启动命令。
  • 参数优化:你命令里的路径分隔符可以调整得更规范(Windows下用反斜杠更稳妥),另外建议加上--disable-site-isolation-trials参数(新版本Chrome的站点隔离机制可能会拦截本地文件请求),修改后的命令如下:
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --user-data-dir="C:\Chrome dev session" --disable-web-security --allow-file-access-from-files --disable-site-isolation-trials

2. 验证本地文件路径的正确性

先排除最基础的路径问题:

  • 直接把file:///C:/tmp/abc.json复制到Chrome地址栏,看能不能正常打开JSON文件。如果打不开,说明文件不存在、路径写错,或者文件本身有JSON语法错误(格式不对会导致Chrome无法渲染)。
  • 检查路径里有没有特殊字符(比如空格、中文),如果有的话,建议把文件移到不带特殊字符的路径下(比如C:\tmp\abc.json就没问题,但如果是C:\我的文件\abc.json可能会触发权限拦截)。

3. 简化XHR代码,排查回调问题

你的代码里用到了callback函数,但如果这个函数没有提前定义,可能会导致代码报错,间接引发请求被canceled。先把代码改成最简化的版本,直接打印日志看状态:

var xobj = new XMLHttpRequest();
xobj.overrideMimeType("application/json");
xobj.open('GET', 'file:///C:/tmp/abc.json', true);
xobj.onreadystatechange = function() {
  console.log('当前readyState:', xobj.readyState, 'status:', xobj.status);
  if (xobj.readyState === 4) {
    console.log('响应内容:', xobj.responseText);
  }
};
xobj.send(null);

打开Chrome控制台(F12),看日志输出,确认请求走到了哪一步,有没有未捕获的报错信息。

4. 替代方案:用本地HTTP服务器彻底规避权限问题

如果上面的方法都没解决,其实最稳妥的方式是用HTTP协议访问本地文件,而非直接读取本地文件系统。比如用Node.js的http-server:

  • 先安装:打开命令提示符,运行npm install -g http-server(需要先安装Node.js)
  • 进入C:\tmp目录,运行http-server
  • 然后把你的XHR请求地址改成http://localhost:8080/abc.json,正常启动Chrome(不需要加任何特殊参数),这样就完全不会有本地文件的权限限制了。

内容的提问来源于stack exchange,提问作者user

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:50:26