Firefox原生JSON查看器对特定URL失效的问题排查
这种情况我之前也碰到过几次,结合你已经做的排查(开启devtools.jsonview.enabled、携带Accept: application/json、响应Content-Type正确),大概率是这个特定URL的响应本身或者Firefox的特殊校验逻辑导致的,给你几个具体的排查方向:
响应JSON存在隐藏语法错误
服务器标了application/json不代表内容真的符合标准。比如可能末尾多了个逗号、字符串里的引号没转义、甚至混了不可见的特殊字符(比如零宽空格)。你可以把响应内容复制到浏览器控制台,用JSON.parse(响应内容)试试能不能解析——如果报错,那就是JSON本身的问题,Firefox会自动 fallback到纯文本显示。响应体积或编码异常
如果这个JSON响应特别大(比如几百MB级别),Firefox的JSON查看器可能因为性能限制切换到纯文本模式。另外,如果响应用了非UTF-8编码(比如GBK),哪怕Content-Type写了application/json,也可能导致解析失败。你可以在DevTools的「响应」面板里查看编码信息,或者手动转码后再校验格式。响应头存在冲突字段
有些服务器会返回额外的响应头干扰解析,比如Content-Encoding设置了gzip但实际没正确解压,或者X-Content-Type-Options: nosniff让浏览器严格校验内容,而实际内容和Content-Type存在细微不匹配。你可以对比这个URL和正常URL的响应头,看看有没有特殊的差异字段。缓存或DevTools状态问题
有时候浏览器缓存了旧的纯文本响应,或者DevTools的缓存没刷新。试试这几个操作:- 按
Ctrl+Shift+R强制刷新页面 - 在DevTools的「网络」面板勾选「禁用缓存」,重新请求
- 关闭并重启DevTools,甚至重启Firefox试试
- 按
扩展冲突
如果你装了网络拦截、代理或者第三方JSON格式化类的扩展,可能会影响这个特定URL的处理。可以在隐私浏览窗口打开这个URL并查看响应——隐私窗口默认禁用所有扩展,如果这里能正常显示JSON,那就是某个扩展的问题,逐个禁用排查就行。
内容的提问来源于stack exchange,提问作者Andriy

