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

Angular/TypeScript调用Azure函数GET接口获200却触发Unknown Error

问题原因及解决办法

出现这种情况的核心原因通常是Angular的HttpClient默认会把响应内容当作JSON解析,如果Azure函数返回的内容不是合法的JSON格式,或者响应头的Content-Type与实际内容不匹配,即使HTTP状态码是200,解析失败也会触发错误回调。

常见场景及解决方法

1. 响应内容不是合法JSON

比如Azure函数直接返回纯文本(如"Hello World")、HTML片段,或者JSON格式存在语法错误(比如缺少引号、逗号不规范)。

解决办法:

  • 要么修改Azure函数,返回标准的JSON结构,同时设置响应头Content-Type: application/json。比如把返回内容改成{"data": "Hello World"}。
  • 如果不需要JSON格式,在请求时指定responseType为对应类型,比如纯文本:
this.http.get<any>(myUrl, { responseType: 'text' })
  .subscribe({
    next: data => {
      console.log(data);
    },
    error: error => {            
      console.error('There was an error!', error);
    }
  });

2. 响应头Content-Type与实际内容不匹配

比如Azure函数返回的是JSON,但Content-Type被设成了text/plain,HttpClient会按纯文本处理后尝试转JSON,最终导致报错。

解决办法:
在Azure函数中显式设置响应的Content-Type为application/json。比如在C#的Azure函数里:

return new OkObjectResult(new { Data = "Hello World" })
{
    Headers = { { "Content-Type", "application/json" } }
};

3. 查看详细错误信息定位问题

可以在错误回调里打印更详细的错误字段,明确失败原因:

error: error => {            
  console.error('完整错误对象:', error);
  console.error('错误消息:', error.message);
  console.error('错误响应体:', error.error);
}

比如如果是JSON解析错误,error.message会显示类似"Unexpected token H in JSON at position 0"的提示,直接指向问题根源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 07:02:12