调用MS Graph API获取用户时使用response.json()报错问题咨询
问题原因
- 核心原因:你当前拿到的响应并非微软Graph API返回,而是本地开发服务器返回的SPA fallback HTML文件。触发该问题的核心证据如下:
- JSON解析报错出现
<字符,对应HTML文件开头的<!DOCTYPE>标签 - Response的
type字段为basic,代表同域响应,而graph.microsoft.com属于跨域地址,正常请求成功的跨域响应type应为cors - 返回的响应头为空对象,微软Graph API的标准响应必然携带
Content-Type、request-id等响应头
- JSON解析报错出现
response.body.json()报错的原因:ReadableStream实例本身没有json方法,json()是Response实例的原生方法,该调用方式本身属于语法错误。
解决方法
- 第一步校验请求地址:在fetch调用前打印完整的请求URL,确认地址携带完整的
https://协议头,没有拼写错误。如果缺失协议头,fetch会将地址识别为当前域名下的相对路径,导致请求打到本地开发服务器。 - 第二步校验本地代理规则:检查开发服务(webpack/Vite等)的代理配置,确认没有规则误拦截发往Graph API的请求。
- 第三步校验请求头:打印
getHeaders(token)的返回结果,确认Authorization头为Bearer {有效token}的正确格式,没有缺失或格式错误。 - 第四步临时调试验证:将
response.json()替换为response.text(),打印返回的字符串内容,可直接确认是否为本地返回的SPA首页HTML,快速定位问题来源。
内容的提问来源于stack exchange,提问作者Jeppe Christensen
相关产品推荐
相关产品推荐

