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

调用SendGrid API遇401未授权错误:Angular请求失败Python正常

解决Angular $http调用SendGrid API出现401未授权的问题

看起来你遇到了一个典型的前后端请求不一致问题——Python后端能正常调用SendGrid API,但Angular前端用$http发起请求就返回401未授权。结合你的代码片段和场景,我整理了几个可能的原因和对应的解决办法:

1. 先确认Authorization头的格式是否正确

这是最容易踩的小坑:Bearer和token之间必须有一个空格!你的代码里写的是'Authorization': 'Bearer SG.PE-XXXXXXXXXXXXXXXXXXXXXX',先仔细检查有没有漏掉这个空格。如果少了空格,SendGrid会识别为无效的授权令牌,直接返回401。

正确的Angular请求写法应该是这样的:

var authToken = 'SG.PE-XXXXXXXXXXXXXXXXXXXXXX';
var sgUrl = "https://api.sendgrid.com/v3/contactdb/lists";

$http({
  method: 'GET',
  url: sgUrl,
  headers: {
    'Authorization': 'Bearer ' + authToken, // 注意Bearer后面的空格
    'Content-Type': 'application/json'
  }
})
.then(function(response) {
  console.log('联系人列表:', response.data);
})
.catch(function(error) {
  console.error('请求失败:', error);
});

2. 检查浏览器是否实际发送了Authorization头

Angular运行在浏览器环境中,可能存在跨域或者拦截器干扰的情况,导致Authorization头没有被正确发送。你可以打开浏览器的开发者工具(F12),切换到Network标签,找到SendGrid的请求,查看Request Headers里是否真的包含Authorization字段,以及字段值是否和你设置的一致。

如果头没发出去,那大概率是下面两个问题之一:

3. 排查是否有HTTP拦截器修改了请求头

如果你的Angular应用里配置了全局HTTP拦截器(比如统一处理token、错误等),可能会不小心覆盖或者移除了Authorization头。检查一下你的拦截器代码,看是否有类似这样的逻辑:

app.factory('authInterceptor', function() {
  return {
    request: function(config) {
      // 这里如果有修改headers的代码,确认没有覆盖Authorization
      return config;
    }
  };
});

app.config(function($httpProvider) {
  $httpProvider.interceptors.push('authInterceptor');
});

如果拦截器里有对headers的全局修改,确保它不会覆盖你手动设置的Authorization头。

4. 处理跨域(CORS)预检请求的问题

前端浏览器发起请求时,会先发送一个OPTIONS预检请求,询问服务器是否允许跨域请求以及自定义头(比如Authorization)。SendGrid的API理论上支持CORS,但如果你的请求触发了预检,需要确认服务器返回的响应头包含:

  • Access-Control-Allow-Origin:允许你的域名(或者*,生产环境不推荐)
  • Access-Control-Allow-Headers:包含Authorization字段

你可以在Network面板里查看OPTIONS请求的响应头,如果这些字段缺失,可能需要在SendGrid控制台配置允许的来源域名(不过SendGrid通常默认允许所有域名,这个概率较低)。

最后验证

如果以上步骤都检查过,还是有问题,可以用Postman或者curl模拟浏览器的请求(带上相同的头),看是否能成功。如果Postman能成功,那问题肯定出在Angular的请求配置上;如果Postman也失败,那可能是token的权限问题(不过你Python能成功,所以这个可能性很小)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:45:29